2016-11-03 5 views
0

Wie kann ich solche Ausgaben in C# lesen, vielleicht in C# native Listen konvertieren? Ohne den Text und Split analysiert und String-Manipulationen machen, muss eine einfache Möglichkeit habenJSON-Text zu C# -Wörterbuch

[ 
    "\/recordings\/series\/seasons\/432250", 
    "\/recordings\/series\/seasons\/263560" 
] 

ich in den Zahlen nur daran interessiert bin, ich weiß, dass ich einfach nur einen String Split mit ‚‘ verwenden könnte und erhalten die letzten 6 Ziffern Zeichen

ein weiteres Beispiel:

[ 
    "\/recordings\/series\/episodes\/428389", 
    "\/recordings\/series\/episodes\/428386", 
    "\/recordings\/movies\/airings\/434062", 
    "\/recordings\/series\/episodes\/430801" 
] 

In diesem Fall wird interessant sein, die <> Pfade typische json zu wissen, dass ich deserialisieren bin mit nicht mit jenem Wörterbuch lik arbeiten es json strings

danke

+0

Verwendung json.net http://www.newtonsoft.com/json – urlreader

+0

Ich verwende newtonsoft.com \ Json komplexe Json Texte Klassen zu analysieren ... aber es funktioniert nicht wie diese Wörterbücher wie Strings – AMoraes

+0

Haben Sie versucht, es als "List " oder "string []" zu analysieren? – binki

Antwort

0

Viele Leute verwenden gerne die Json.NET/Newtonsoft.Json-Bibliothek. Sie können es als NuGet Paket zu einem Projekt leicht hinzufügen und es dann wie folgt verwenden:

var json = "[\"/recordings/series/seasons/432250\",\"/recordings/series/seasons/263560\"]"; 

var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(json); 

Für die Zahlen, es gibt viele Möglichkeiten, um darüber zu gehen. Hier ist eine von vielen:

var numbersList = list.Select(x => x.Split('/').Last()).ToList(); 
+0

Und für den Fall, dass Sie unsicher sein, wie Sie Json.NET zu Ihrem Projekt hinzufügen, deckt diese Frage, dass: http : //stackoverflow.com/questions/4444903/how-to-install-json-net-using-nuget – UtopiaLtd

+0

alle Antworten scheint das Problem zu lösen, aber ich habe dieses erste getestet, da nur eine Zeile Code ist; -) Ich mochte ... das ist genug für meine Bedürfnisse und einfach wie erwartet Danke – AMoraes

0

Versuchen Sie den folgenden Code.

 var json = @"[ 
""\/recordings\/series\/episodes\/428389"", 
""\/recordings\/series\/episodes\/428386"", 
""\/recordings\/movies\/airings\/434062"", 
""\/recordings\/series\/episodes\/430801"" 
]"; 

     var jarray = JArray.Parse(json); 
     var list = from a in jarray 
      let val = a.Value<string>() 
      let rgroup = Regex.Match(val, @"[^0-9]*([0-9]+)") 
      let vstring = rgroup.Groups[1] 
      select int.Parse(vstring.Value); 

Es erfordert Newtonsoft.Json Bibliothek und list hat Art von IEnumerable<int>. Und vergessen Sie auch nicht,

using System; 
using System.Linq; 
using System.Text.RegularExpressions; 
using Newtonsoft.Json.Linq; 

an der Spitze Ihrer CS-Datei hinzuzufügen.

+0

Vielen Dank ... – AMoraes

0

Ein einfacher Weg ist JavaScriptSerializer from System.Web.Extensions.dll zu verwenden. Mit der Methode Deserialize<T>() können Sie den Typ angeben, für den der JSON deserialisiert werden soll. Im Falle von einfachen Primitiven, wie zum Beispiel einem Array von Strings, funktioniert es magisch ohne viel Aufhebens. Ein Beispiel:

var json = "[\"\\/recordings\\/series\\/seasons\\/432250\",\"\\/recordings\\/series\\/seasons\\/263560\"]"; 
var stringArray = new JavaScriptSerializer().Deserialize<string[]>(json); 
foreach (var element in stringArray) 
    Console.WriteLine(element.Split('/').Last()); 
+0

Meine Programmierkenntnisse sind alt wie Pascal, VB und C# und vor allem für Windows-Formulare .. gerade jetzt finde ich einige Verwendung für Web-Programmierung und sieht wie Json ist sehr beliebt ... froh, mehr zu erfahren .. danke für die Hilfe – AMoraes