2013-03-03 232 views
24

这是JSON字符串:JObject如何读取数组中的值?

{"d":[{"numberOfRowsAdded":"26723"}]}

string json = DAO.getUploadDataSummary(); 
JObject uploadData = JObject.Parse(json); 
string array = (string)uploadData.SelectToken("d"); 

如何修改代码,读者“的值numberOfRowsAdded?

回答

28

你需要转换为JArray

string json = "{\"d\":[{\"numberOfRowsAdded\":\"26723\"}]}"; 
JObject parsed = JObject.Parse(json); 
JArray array = (JArray) parsed["d"]; 
Console.WriteLine(array.Count); 
+2

这是一个选择,但强制转换为JArray不要求:uploadData [“d”] [0] [“numberOfRowsAdded”] – 2013-03-05 04:29:56

+0

@ JamesNewton王:出于某种原因,我读到了一个问题,想知道数组中元素的数量*和'JArray'感觉是最简单的方法。 – 2013-03-05 04:32:07

31
JObject uploadData = JObject.Parse(json); 
int rowsAdded = Convert.ToInt32((string)uploadData["d"][0]["numberOfRowsAdded"]) 
+0

不错,Newtonsoft.Json的开发者。 1+ – IamBatman 2017-10-31 21:28:27

3

你可以投你JObject作为dynamic对象。
您也可以将您的阵列投射到JArray对象。

JObject yourObject; 
//To access to the properties in "dot" notation use a dynamic object 
dynamic obj = yourObject; 
//Loop over the array 
foreach (dynamic item in obj.d) { 
    var rows = (int)item.numberOfRowsAdded; 
}