2016-07-27 4 views
2

Ich habe diese SaiteWie ein Beispiel String in C#

[ 
    { 
     "url_short":"http:\/\/sample.com\/8jyKHv", 
     "url_long":"http:\/\/www.sample.com\/", 
     "type":0 
    } 
] 

Was ich will, ist zu bekommen http:\/\/sample.com\/8jyKHv und übersetzt es

http://sample.com/8jyKHv 

Ist es möglich, zu analysieren?

+0

Sie haben 2 Möglichkeiten hier. Entweder behandeln Sie dies als Zeichenfolge und verwenden Teilzeichenfolge und ersetzen. Entweder behandeln Sie dies als JSON und nehmen eine Deserialisierung in ein Klassenobjekt vor. Beide ergeben das gewünschte Ergebnis –

+2

Siehe http://stackoverflow.com/questions/11260631/convert-json-into-class-object-in-c-sharp für die JSON-deserialize-Methode - die ich über die Substring-Lösung empfehle –

+0

Ja, ich empfehle dringend die JSON-Methode, nicht die String/Substring/Replace-Methode. –

Antwort

1

Der JSON Weg bekommen kann sicherlich empfohlen, kann aber nicht viel darüber erzählen. Hier ist der alternative Weg mit Regex:

+0

muss Regex.Replace sein (mUrl.Groups [1] .Value, @ "\\", ""); – jt25

+1

@AJB nein. '@' entkommt bereits der Zeichenfolge. Entweder "" \\ "oder" @ "\" '. – C4u

1

Der String ist ein JSON-String, so dass Sie eine Klasse erstellen, können die Werte wie diese

public class Rootobject 
{ 
    public Class1[] Property1 
    { 
     get; 
     set; 
    } 
} 

public class Class1 
{ 
    public string url_short 
    { 
     get; 
     set; 
    } 
    public string url_long 
    { 
     get; 
     set; 
    } 
    public int type 
    { 
     get; 
     set; 
    } 
} 

Nach dieser Klasse erhalten Sie die Daten wie diese

string json = "[{"url_short":"http:\/\/sample.com\/8jyKHv","url_long":"http:\/\/www.sample.com\/","type":0}]"; 
List<Rootobject> ro = JsonConvert.DeserializeObject<List<Rootobject>>(json); 
string ururl = ro[0].Propert1[0].url_short; 
+0

Entfernen von \ ist veraltet, weil nach der Deserialisierung es gegangen ist. Ihre json-Beispielzeichenfolge ist falsch (das "\" fehlt). Http://json.org für Spezifikationen –

+0

Dank @SirRufo. Ich habe die Antwort aktualisiert. –

+1

Ein Fehler übrig: Der JSON enthält ein Array von Objekten; o) –

3

Diese Zeichenfolge ist JSON.

Sie können es analysieren, indem Sie JSON.NET verwenden.

Beispiel:

using System; 
using System.Collections.Generic; 
using Newtonsoft.Json; 

public class RootObject 
{ 
    public string url_short { get; set; } 
    public string url_long { get; set; } 
    public int type { get; set; } 
} 

public class Program 
{ 
    static public void Main() 
    { 
     string j = "[{\"url_short\":\"http:\\/\\/sample.com\\/8jyKHv\",\"url_long\":\"http:\\/\\/www.sample.com\\/\",\"type\":0}]"; 

     List<RootObject> ro = JsonConvert.DeserializeObject<List<RootObject>>(j); 

     Console.WriteLine(ro[0].url_short);     
    }  
} 

Antwort:

http://sample.com/8jyKHv

2

Versuchen Sie, diese

Erstellen Sie eine Klasse wie unten

Hinweis: Sie können für spezielle Option in Visual Studio Einfügen verwenden, um alle Klassen der JSON

bearbeiten Bezug zu generieren -> Inhalte einfügen -> Einfügen Json

als Klassen

es alle Klassen erstellen, um die im Zusammenhang

JSON
public class url_details 
    { 
     public string url_short { get; set; } 
     public string url_long { get; set; } 
     public int type { get; set; } 
    } 


    public List<url_details> json_deserialized() 
    { 
     string json = "[{\"url_short\":\"http:\\/\\/sample.com\\/8jyKHv\",\"url_long\":\"http:\\/\\/www.sample.com\\/\",\"type\":0}]"; 

     List<url_details> items = new List<url_details>(); 
     items = JsonConvert.DeserializeObject<List<url_details>>(json); 

     return items; 
    } 

Und Sie können wie das Element zugreifen unten

List<url_details> obj = json_deserialized(); 

    string url_short = obj[0].url_short;