项目需要用Newtonsoft.json来解析json串。
这里对比一下litJson和Newtonsoft的使用
假设是这串json
{
"total": 1,
"code": 0,
"rows": [
{
"id": 1013,
"name": "QB",
"version": "1.0.2",
"size": 707608
}
]
}
首先使用LitJson来解析的话
private void LitJsonRead(string dataJson)
{
JsonData json = JsonMapper.ToObject(dataJson);
if((int)json["code"]==0)
{
JsonData data = json["rows"][0];
int id = (int)data["id"];
string name = data["name"].ToString();
string version = data["version"].ToString();
string size = data["size"].ToString();
}
}
使用Newtonsoft类似,但是要多一个步骤
private void NewtonsoftRead(string dataJson)
{
JObject json = JObject.Parse(dataJson);
if((int)json["code"] == 0)
{
// 过去的错误做法
// string dataS = json["rows"][0].ToString();
// JObject data = JObject.Parse(dataS);
// 如果明确后续的部分是字典格式,则应该将JToken 转为 JObject
var data = json["rows"][0] as JObject;
int id = (int)data["id"];
string name = data["name"].ToString();
string version = data["version"].ToString();
string size = data["size"].ToString();
}
}
以上就是两种json解析工具读取json的使用方法,拿LitJson来说,对象都是JsonData,即便是往下读取也可以直接用JsonData对象来保存;
而Newtonsoft的话,需要先将往下读取的对象用string类型保存,然后通过JObject.Parse来转换成JObject对象继续读取。
效果是相差无几,只是看个人使用习惯了。