2013-12-16 73 views
0

我使用NewtonSoft JSON.Net和我有一個JObject,我需要添加和刪除項目,並從我的代碼動態形成它。 如果這是我的JSON:如何將值添加到NewtonSoft JObect?

{ 
"IgnoredInterests": [ 
    { 
     "Id": 1, 
     "Name": "test" 
    }, 
    { 
     "Id": 2, 
     "Name": "test" 
    } 
] 
} 

我需要能夠添加更多的項目,甚至通過代碼從中刪除項目。 我怎樣才能將其添加到JObject:

{ 
    "Id": 3, 
    "Name": "test" 
} 

甚至刪除:

{ 
    "Id": 2, 
    "Name": "test" 
} 

我感謝你的幫助......

回答

2
string json = @"{ 
       'IgnoredInterests': [ 
        { 
         'Id': 1, 
         'Name': 'test' 
        }, 
        { 
         'Id': 2, 
         'Name': 'test' 
        } 
       ] 
       }"; 
     JObject obj = JObject.Parse(json); 

     string json_add = @"{ 
        'Id': 3, 
        'Name': 'test' 
       }";  

     JArray array = obj.GetValue("IgnoredInterests") as JArray; 

     JObject obj_add = JObject.Parse(json_add); 

     array.Add(obj_add); 


     foreach (JObject item in array.Children()) 
     { 
      if (item.GetValue("Id").ToString() == "2") 
      { 
       array.Remove(item); 
       break; 
      } 
     } 
+0

我thougt這個解決方案還: * *'string a = json.ToString(); a = a.Insert(a.Length - 4,「,{\」Id \「:3,\」Name \「:\」test \「}」); json = JObject.Parse(a); ** ** 您認爲可以有更好的表現嗎? –

+0

當然,原始的「插入」解決方案具有更好的性能,但這意味着您必須知道在哪裏插入。您可以根據您的需求和偏好選擇最佳的解決方案。 –

+0

我總是把它作爲最後一項,所以我認爲我會堅持表現,但我也會保留你的解決方案。謝謝( - : –