用Newtonsoft将json串转为对象的方法(详解)
程序员文章站
2023-11-27 23:37:22
首先,将json串转为一个jobject对象:
jobject jo = (jobject)jsonconvert.deserializeobject(curre...
首先,将json串转为一个jobject对象:
jobject jo = (jobject)jsonconvert.deserializeobject(currentselecteditemreq);
这个jobject是一个“值对”类型,比如说我们的json串是这样:
{ "rows":[ [ {"numiid":"001"}, {"picurl":"xxx.png"}, {"title":"xxxxx"}, {"price":"xxx"}, {"outerid":"xxxx"} ], [ {"numiid":"002"}, {"picurl":"xxx.png"}, {"title":"xxxxx"}, {"price":"xxx"}, {"outerid":"xxxx"} ], [ {"numiid":"003"}, {"picurl":"xxx.png"}, {"title":"xxxxx"}, {"price":"xxx"}, {"outerid":"xxxx"} ] ] }
那么可以jo["rows"]就是一个数组,如果这个反之如果不是数组可能是一个对象,那么我们根据他实际是一个什么值来进行强制转换。
以上面这个json串为例,我们这样取到这个数组:
jarray arr = (jarray)jo["rows"];
我们发现这个数组里面还是一个数组,而里层数组里面才是一个object,那么我们可以这样取:
for (int i = 0; i < arr.count; i++) { jarray arr2 = (jarray)arr[i]; for (int j = 0; j < arr2.count; j++) { jobject obj = (jobject)arr2[j]; response.write(obj["numiid"]); response.end(); } }
如果实际是一个数组,我们就用jarray强制转换,如果实际是一个值对,我们就用jobject强制转换。
最后一层应该是一个值对类型的object,怎么把这些值全部取出来?
最后应该是形如:
{"numiid":"003"}
取值很简单,直接:
string str=obj["numiid"];
问题是有时候这个obj是这样的:
{"picurl":"xxx.png"}
而且你不知道他什么时候是什么。
这时应该这样取:
foreach (keyvaluepair<string, jtoken> kp in obj) { response.write(kp.key); response.write("="); response.write(kp.value); response.end(); }
以上这篇用newtonsoft将json串转为对象的方法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: c#进程之间对象传递方法
下一篇: ai怎么设计旋转的正方形图形?