2016-08-12 1 views
1

Ich habe eine JSON-Daten wie unten, ich wollte einen neuen Eintrag zu "revs" -Array hinzufügen, wenn Item_id übereinstimmt, sagen wir Item_id, das ich gesehen habe 1 und die bestehenden json Daten bestehen aus zwei Punkten im Innern „U“ -Anordnung und wollten neuen Eintrag hinzuzufügenjson.net, um neues Objekt/Objekt in bestehendes JSON-Objekt einzufügen/einzufügen

{ 
    "Root" : [ 
     { 
      "Item_Name" : "Test", 
      "Items" : [ 
       { 
        "Item_id" : "1", 
        "revs" : [ 
         { 
          "rev_id" : "1" 
         }, 
         { 
          "rev_id" : "3" 
         }, 
         { 
          "rev_id" : "need to add new entry here" 
         } 
        ] 
       }, 
       { 
        "Item_id" : "2", 
        "revs" : [ 
         { 
          "rev_id" : "1" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

i analysiert die jSON-Daten wie diese

JObject jsonObject = JObject.Parse(<the json data above>); 

Iterierte in „U“ -Anordnung nach Item_id stimmt überein und ich erstelle ein JObject, das neuen Eintragsdaten

zugeordnet ist 210
JObject new_rev = new JObject(); 
new_rev["rev_id"] = "need to add new entry here" 

Was muss ich tun, damit meine new_rev-Daten in jsonObject reflektiert werden?

p/s: i verwenden jsoncpp für C++ vor und i mit Referenzobjekt nur Schleife durch und i json Daten in leicht

dank geändert haben kann.

Antwort

2

Root Unter der Annahme, nur ein Element im Array und Item_id vorausgesetzt wird

JObject jsonObject = JObject.Parse(<the json string>); 
    JObject new_rev = new JObject(); 
    new_rev["rev_id"] = "need to add new entry here"; 
    JArray items = jsonObject["Root"][0]["Items"].Value<JArray>(); 
    foreach(var item in items){ 
     if(item.Value<JObject>()["Item_id"].Value<string>() == "1"){ 
      item["revs"].Value<JArray>().Add(new_rev); 
      break; 
     } 
    } 

es Siehe hier https://dotnetfiddle.net/IYVULd

+0

Ihre Antwort scheint zu arbeiten, aber die JSON-Daten gab ich nur Beispiel, eigentlich gibt es mehrere Wurzeln und mehrere Artikel, trotzdem danke für Ihre Hilfe. – hghew

1

eindeutig sein Ich versuche, besseren Weg, um herauszufinden, in den Daten hinzuzufügen, am Ende realisiere LINQ (Methoden-Syntax) mache mein Leben einfacher, der folgende Code funktioniert für mich, obwohl enthält mehrere Root, Artikel

Sorry, ich bin immer noch neu in LINQ, vielleicht jemand kann mich mit Witz erleuchten h Abfragesyntax, die das gleiche tun

JObject jsonObject = JObject.Parse(<existing json data>); 
JObject newNode = new JObject(); 
newNode["rev_id"] = "need to add new entry here" 

jsonObject["Root"].Children() 
         .Where(w => w["Item_Name"].ToString() == selectedItemName) 
         .Select(s => s["Items"]).Children() 
         .Where(w => w["Item_id"].ToString() == selectedItemId) 
         .Select(s => s["revs"]).Children() 
         .LastOrDefault().AddAfterSelf(newNode); 
Verwandte Themen