2016-11-11 17 views
0

Ich bin neu in JSON, also hoffe ich, dass Sie mir helfen können. Ich tat dies:Parsing nur wenige Felder von JSON

var myfields = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(s); 

dies ist der Link für die JSON: link Wie Sie Ich habe viele Felder sehen können, wird jedes Feld einige Male gezeigt. Jetzt habe ich nur Zugriff auf die erste. zum Beispiel:

final = myfields.results.First().warnings[0]; 

Dieser String enthält das erste Warnungen Feld. Ich habe versucht, anstelle von 0 - 1, aber ich bekomme einen Fehler.

Wie kann ich die anderen bekommen?

Dank

+1

Was haben Sie versucht? Geben Sie uns eine Probe des JSons, das Sie erhalten haben, und die erwartete Ausgabe. – Neyoh

+1

Bitte zeigen Sie Ihre Arbeit. Wir können Ihnen nicht helfen, Ihr Problem zu lösen, ohne zu sehen, welches Problem Sie haben. – Soviut

+0

Ein [mcve], der das Problem demonstriert, wäre erforderlich, damit wir helfen können. Siehe https://stackoverflow.com/help/how-to-ask. – dbc

Antwort

4

erstellen Klasse mit nur Feldern, die Sie brauchen, und dann json

public class YourTwoField 
{ 
    [JsonProperty("field1")] 
    public string FieldOne { get; set; } 

    [JsonProperty("field2")] 
    public string FieldTwo { get; set; } 
} 

var myfields = Newtonsoft.Json.JsonConvert.DeserializeObject<YourTwoField>(yourJsonString); 
// use values 
myfields.FieldOne 

Aktuellen Stand Kommentare deserialisieren:

Ihr Problem war, dass Sie nicht genügend Informationen, um die vorsah Anfang. Die erforderlichen Felder befinden sich in der untersten Ebene der JSON-Hierarchie.

  1. Kopieren Sie Ihr json Ergebnis in die Zwischenablage
  2. in Visual Studio geöffnet leere Datei
  3. Dann Edit ->Paste Special -> Einfügen JSON als Klassen

nun all JSON-Schema als Klassen, wo Ich denke, wird erzeugt werden einige RootObject, dann

var root = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(yourJsonString); 

//Then your can brows to the values you want 
root.results.First().openfda.generic_name 
root.results.First().openfda.brand_name 

Oder Schleife alle Ergebnisse

foreach(var result in root.results) 
{ 
    result.openfda.generic_name; 
    result.openfda.brand_name; 
} 
+0

Hallo, vielen Dank. Das sind zum Beispiel die API-Ergebnisse: [link] (https://api.fda.gov/drug/label.json?search=brand_name:humalog&limit=15), ich hatte Probleme mit Deserialize the JSON. –

+0

Welche Art von Problemen? und füge dein api-Ergebnis zur Frage – Fabio

+0

hinzu Hi, ich habe vorher einen Link in den Kommentar eingefügt. Ich hatte Probleme mit der Analyse ausgewählter Felder. Jetzt sehe ich Ihren Tipp und ich werde versuchen, ihn zu verwenden. –