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"}}
区别在于一个是{,一个是[,好麻烦 展开
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"}}
区别在于一个是{,一个是[,好麻烦 展开
1个回答
展开全部
把子成员类型判断准确就可以。
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"?
麻烦你了 :)
追答
JSON字串中子成员的值是在{....}花括号内的读成JObject。[.....]方括号内的读成JArray;根据实际数据灵活对应。
属性名,应在所在JObject对象取得属性JProperty。然后取得对应名称
jobject.Property("price").Name // "price"
jobject.Property("price").Value //price对应的值JToken对象
同上
if(jobject.Property("name")==null) //没有name属性
else //有name属性
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询