C# 中的json.net如何取得数组中的个数以及枚举它们

如:string={"name":"小明","items":["10":{"weight":"100","x":"1"},"22":{"yy":2,"abc":"3"}]... 如:
string =
{
"name":"小明",
"items":[
"10":{"weight":"100", "x":"1"},
"22":{"yy":2,"abc":"3"}
]
}

重点问题在于prop这是一个列表,它里面的项数量不因固定,里面的内容也不固定

问题1:如何知道prop有多少个子项?没找到Count之类的方法,以及有办法用for配合index一个个用访问?
问题2:假设问题1有办法,如何知道每项的名字,而不是值?如上面的“10”、“22”?

我开头是这样写的:
jobject jo = jobject.paser(str);
string name = jo["name"].tosting();//这没问题
int count = jo["items"].count()?这就出问题了

求用最简单的方法,代码越简单越好。
关于上面的List还有2种写法:
“list":[{"x":"1"}, {"y":"2"}]
“list":{{"x":"1"}, {"y":"2"}}
区别在于一个是{,一个是[,好麻烦
展开
 我来答
百度网友9308069
2014-10-04 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1923万
展开全部

把子成员类型判断准确就可以。

switch( jo["items"].Type ){
case JTokenType.Array:
     int count =((JArray)jo["items"]).Count;
     //枚举
     foreach(JToken t in (JArray)jo["items"]){
          switch(t.Type){
          
          }
     }
break;
case JTokenType.Object:
     int count =((JObject)jo["items"]).Count;
break;
default://...
}
更多追问追答
追问
谢谢你的回答,有几点我没理解
1.请问什么时候它会为array?什么时候为object?与上面的2种写法有对应关系吗?
2.转完后得到的是jtoken或jobject,如何得到它的属性名而不是值?
3.还有如何确认jo中是否有某属性?如"name"?

麻烦你了 :)
追答
  1. JSON字串中子成员的值是在{....}花括号内的读成JObject。[.....]方括号内的读成JArray;根据实际数据灵活对应。

  2. 属性名,应在所在JObject对象取得属性JProperty。然后取得对应名称

    jobject.Property("price").Name // "price"

    jobject.Property("price").Value //price对应的值JToken对象

  3. 同上

    if(jobject.Property("name")==null) //没有name属性

    else //有name属性

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式