使用Newtonsoft.json解析json

项目需要用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对象继续读取。

效果是相差无几,只是看个人使用习惯了。

猜你喜欢

转载自blog.csdn.net/DoyoFish/article/details/81976181
今日推荐