2013-10-31 68 views
0

我正在使用newtonsoft json庫。我想在後面的json中將標記「Status」的值從false更新爲true。我怎樣才能做到這一點?:如何更新json中的特定值?

{ 
    "type": "FeatureCollection", 
    "Status": false, 
    "crs": { 
     "type": "EPSG", 
     "properties": { 
      "code": 28992 
     } 
    } 
} 
+2

你到目前爲止試過了什麼? –

+0

@NewtonSheikh什麼都沒有。我無法在JObject中看到任何Setter。 – Ankit

+0

檢查@Nunners的解決方案 –

回答

6

你可以反序列化,修改的值,然後再次

dynamic jsonObject = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString); 
jsonObject.Status = true; 
var modifiedJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObject); 
+0

謝謝,沒有料到比這更乾淨的方式。儘管我猜它必須保存在try-catch中以避免Status不是JSON的一部分。對? – Ankit

+1

好吧,這不取決於,這取決於你想要做什麼,如果Status不存在那段代碼將會添加它。如果你不想那麼檢查jsonObject.Status!= null。但是代碼不會失敗並拋出異常。 –

+0

好的謝謝...... – Ankit

2

序列化在這種情況下,令牌的名稱是已知的(狀態)。但是,當僅在運行時知道令牌的名稱(當名稱作爲參數傳遞時)。

string UpdateTokenValue(string jsonString, string TokenName, string newValue) 
{ 
    JObject jsonObj = (JObject)Netwonsoft.Json.JsonConvert.DeserializeObject(jsonstring); 
    jsonObj.Property(TokenName).Value = newValue; 
    return NewtonSoft.Json.JsonConvert.SerializeObject(jsonObj); 
}