Das Durchlaufen einer verschachtelten JSON-Array in C# mit Newtonsoft
Habe ich einen block von JSON wie folgt:
[
{
"id": 1,
"name": "Section1",
"project_id": 100,
"configs": [
{
"id": 1000,
"name": "myItem1",
"group_id": 1
}
]
},
{
"id": 2,
"name": "Section2",
"project_id": 100,
"configs": [
{
"id": 1001,
"name": "myItem2",
"group_id": 2
},
{
"id": 1002,
"name": "myItem3",
"group_id": 2
},
{
"id": 1003,
"name": "myItem4",
"group_id": 2
}
]
},
{
"id": 3,
"name": "Section3",
"project_id": 100,
"configs": [
{
"id": 1004,
"name": "myItem5",
"group_id": 5
},
]
}
]
Ich zog Sie in den Speicher als JArray.
Brauche ich um zu Durchlaufen und so bin ich Griff nach einer Liste der ids und Namen aus nur die config sub-arrays. Im Idealfall werde ich am Ende mit etwas wie dieses:
1000, myItem1
1001, myItem2
1002, myItem3
1003, myItem4
1004, myItem5
Ich habe eine harte Zeit zu verstehen, was Newstonsoft fordert eine JObject vs ein JArray, oder wie Sie auf die verschiedenen Teile jedes dieser Daten-Strukturen. Was ich jetzt haben, ist wie folgt:
foreach (JObject config in result["configs"])
{
string id = (string)config["id"];
string name = (string)config["name"];
string gid = (string)config["group_id"];
Console.WriteLine(name + " - " + id + " - " + gid);
}
Funktioniert das nicht, aber ich hoffe es verdeutlicht was mein Ziel ist. Ich habe nicht in der Lage um Stück zusammen, wie um dieses Ziel zu erreichen.
- Bitte geben Sie eine minimale reproduzierbare Beispiel. Was ist das Ergebnis?
- Der einfache Weg ist, definieren Sie einige Klassen für die Struktur - verwenden Sie die Hilfe-of jsonutils.com - und Deserialisieren der json-in den Klassen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
JObject
ist ein Objekt (Analog zu einer Klasse):Einen
JArray
ist ein JSON-array, und enthält mehrereJObject
Personen:Den Stamm ein JSON-Dokument kann ein Objekt oder ein array. In deinem Fall ist es ein array.
Den folgenden code und fiddle zeigt, dass dein code ist in Ordnung, vorausgesetzt, dass Sie Deserialisieren Sie das Dokument als das, was es ist - ein array.