2017-07-13 6 views
-2

Ich muss eine JSON-Datei mit C# in kleinere Teile parsen. Ich würde gerne wissen, wie kann ich den JSON parsen, um jedes Produkt wie unten von "Produkt" zu bekommen (da ich jeden kleineren JSON an anderen Orten speichern muss)? Welche Art von Code muss ich schreiben?Parse JSON-Datei mit C#

"76V3SF2FJC3ZR3GH" : { 
      "id" : "76V3SF2FJC3ZR3GH", 
      "attribute1": "AAAAA", 
      "attribute2": "BBBBB", 
      "attribute3": "CCCCC"   
     } 

Beispiel von JSON ist wie:

{ 
    "A" : "XXXXX", 
    "B" : "XXXXX", 
    "C" : "XXXXXX", 
    "D" : "XXXXX", 
    "products" : { 
    "76V3SF2FJC3ZR3GH" : { 
     "id" : "76V3SF2FJC3ZR3GH", 
     "attribute1": "AAAAA", 
     "attribute2": "BBBBB", 
     "attribute3": "CCCCC"   
    }, 
    "RDXNGJU5DRW4G5ZK" : { 
     "id" : "RDXNGJU5DRW4G5ZK", 
     "attribute1": "AAAAA", 
     "attribute2": "BBBBB", 
     "attribute3": "CCCCC"   
    }, 
...... 
    } 
} 
+0

http://json2csharp.com/ könnte auch nützlich sein. –

+0

Um dieses JSON in feste C# -Objekte zu deserialisieren, laden Sie Ihr JSON auf http://json2csharp.com hoch, und ändern Sie 'products' in ein' Dictionary 'im Sinne von [diese Antwort] (https: // stackoverflow.com/a/38793347/3744182) und deserialize mit [tag: json.net] oder vielleicht [tag: javascriptserializer]. – dbc

Antwort

1

Sie Newtonsoft.Json Nuget Paket installieren und dann schreiben:

JsonConvert.Deserialize<MyType>(myJsonString); 

Angabe der Typ nicht zwingend vorgeschrieben ist und Sie können jede json in deserialisieren dynamisches Objekt mit der gleichen Methode.

- Bearbeiten -

Für diesen Fall, dass Sie diese verwenden können:

dynamic result = JsonConvert.Deserialize<dynamic>(myJsonString); 

jetzt result.products ist ein Objekt unterschiedliche Eigenschaften mit den Namen wie "76V3SF2FJC3ZR3GH" enthält, und Sie darauf zugreifen können wie result.products.76V3SF2FJC3ZR3GH.id

Wenn Sie die Liste der Eigenschaften erhalten möchten, sollten Sie Reflection verwenden.

+0

Ich will nicht A, B, C, D. Ich möchte jedes kleine Ding in "Produkte". Worauf bezieht sich MyType? Wie weiß Deserialize, was ich will, ist das jedes kleine Ding? – diane

+0

Könnten Sie mir bitte einen Beispielcode zeigen? Wie kann ich "Produkte" indizieren? – diane

+0

Bitte beachten Sie die Änderung – Emad