2017-07-24 3 views
-3

Ich habe ein Problem bei der Datenanalyse, ich verwende C# in Visual Studios und ich brauche einen Parsing-Algorithmus für meine JSON-Datei. Das ist die Struktur:C# und JSON Daten analysieren

{ 
    "objects": { 
    "minecraft/sounds/mob/stray/death2.ogg": { 
     "hash": "d48940aeab2d4068bd157e6810406c882503a813", 
     "size": 18817 
    }, 
    "minecraft/sounds/mob/husk/step4.ogg": { 
     "hash": "70a1c99c314a134027988106a3b61b15389d5f2f", 
     "size": 9398 
    }, 
    "minecraft/sounds/entity/rabbit/attack2.ogg": { 
     "hash": "4b90ff3a9b1486642bc0f15da0045d83a91df82e", 
     "size 

ich will "Minecraft/sounds/mob/Streu/death2.ogg" und "Raute" die Daten ziehen.

Mein C# -Code:

HttpWebRequest reqobje = WebRequest.Create(assetsurl) as HttpWebRequest; 

using (HttpWebResponse response = reqobje.GetResponse() as HttpWebResponse) 
{ 
    StreamReader objejsonsr = new StreamReader(objectjson); 
    jsonVerisi = objejsonsr.ReadToEnd(); 
} 

parser = JObject.Parse(jsonVerisi); 
JToken job = parser["objects"]; 
+0

Bitte teilen Sie den Fehler, den Sie erhalten, und Beispielcode, wie Sie versuchen, es zu analysieren. Benutzt du Json.net oder eine andere Bibliothek? –

+2

Okay, du hast ein Problem. Welchen Code hast du versucht? Es gibt viele Beispiele für die Analyse von JSON mit C#. Wie geschrieben, zeigt Ihre Frage keinen Aufwand von Ihrer Seite. – Amy

+0

Was hast du probiert? Ich sehe keinen Code – maccettura

Antwort

1

Da Sie json.net verwenden, können Sie die Zeichenfolge in ein beliebiges Objekt deserialisieren Sie benötigen. Das folgende Beispiel ist einen anonymen Typ mit Wörterbuch, so dass Sie die dynamischen Tasten verwenden können, die zurück kommen:

var result = JsonConvert.DeserializeAnonymousType(jsonVerisi, new { objects = 
    new Dictionary<string, Dictionary<string, string>>() }); 
var objects = result.objects; // key/value; 

Dies ist ein Weg Sie sie verwenden können (vielleicht sogar anstelle von anonymen Typen Ihr eigenes Modell zur Karte zu Machen Sie es einfacher, damit zu arbeiten):

var objects = result.objects 
    .Select(m => new 
    { 
     Path = m.Key, 
     Hash = m.Value["hash"], 
     Size = int.TryParse(m.Value["size"], out var value) ? value : 0, 
    }).ToList(); 
var path = objects[0].Path; // Get the path of the first object 
+0

Ich habe nur ein Beispiel zu der Antwort hinzugefügt. Sie können erwägen, zusätzliche Null-Checks für die Wörterbuchschlüssel hinzuzufügen, wenn Sie in eine Prod-Umgebung wechseln, aber das bringt Ihnen hoffentlich den Anfang! –

+0

Vielen Dank, ich habe es in einer Woche gesucht. –