String str = "{'name':'j1','id':1,'items':[{'itemid':1001,'itemname':'it1'},{'itemid':1002,'itemname':'it2'}]}";
//*** 读取JSON字符串中的数据 *******************************
JsonData jd = JsonMapper.ToObject(str);
String name = (String)jd["name"];
int id = (int)(jd["id"]);
Response.Write(string.Format("name:{0},id:{1}<br/>",name,id));
JsonData jdItems = jd["items"];
Response.Write(string.Format("items:<br/>"));
int itemCnt = jdItems.Count;
// 数组 items 中项的数量
foreach (JsonData item in jdItems)
// 遍历数组 items
{
int itemID = (int)item["itemid"];
String itemName = (String)item["itemname"];
Response.Write(string.Format("itemid:{0},itemname:{1}<br/>", itemID, itemName));
}
-----------------------------------------------------------------------------
以上是网上的一个例子
我处理的JSON数据是str={"Result":"OK","Data":"[{\"Tagname\":\"MES_B02_60_799_ALARM\",\"StartTime\":\"2014-4-23 8:55:54\",\"EndTime\":\"2014-4-23 9:55:54\",\"Difference\":0},{\"Tagname\":\"MES_B02_60_799_ALARM\",\"StartTime\":\"2014-4-23 18:55:54\",\"EndTime\":\"2014-4-23 19:55:54\",\"Difference\":0}]"}
当程序运行到 int itemCnt = jdItems.Count;
总是会报一个异常jdItemsNode.Count”引发了“System.InvalidOperationException”类型的异常。
不调试的话会报
The JsonData instance has to be initialized first
你们遇到过类似的问题么?求解决!
中括号不要用双引号引起来
改成:
str={"Result":"OK","Data":[{"Tagname":"MES_B02_60_799_ALARM","StartTime":"2014-4-23 8:55:54","EndTime":"2014-4-23 9:55:54","Difference":0},{"Tagname":"MES_B02_60_799_ALARM","StartTime":"2014-4-23 18:55:54","EndTime":"2014-4-23 19:55:54","Difference":0}]}
应该是这个问题,我去试试,先结贴吧。
看起来好像jdItems没有Item啊。。。。。
jd["items"]里的items是从哪来的啊
@羽商宫: 我写的时候Items已经换成Data了,那只是个我仿写的例子。