天天看點

.Net利用Newtonsoft進行解析Json的快捷方法

現在異構系統之間的資料交換多采用Json格式

.Net如何快捷地解析Json和将Object轉換成json呢?

1.利用Newtonsoft解析Json字元串

在百度上查找資料,利用Newtonsoft解析Json多是把Json轉換成某一特定的Object,這樣的不便之處是有事需要特意為了解析該json而寫一個class,對一些不規範的的Json,難以用Object來轉換的,用他們的方法就不叫難行得通了。

如,需要對以下Json進行解析

{
    "total": 1,
    "rows": [
        {
            "datetime": "2017-12-19 0:00:00",
            "product": "矽樹脂",
            "value": "3"
        }
    ]
}      

對于該Json,如果我們先轉成object再來解析,那麼問題來了,這個object怎麼寫呢?不好寫,那麼,我們就用最直接暴力的方法!!

JArray obj = (JArray)JsonConvert.DeserializeObject("["+JsonText+"]");      

需要注意的是,我們上文中提到的json的最外圍是沒有[ ]的,是以拼接一對[ ](代碼中的紅色部分)

如果不加這對中括号,會産生以下報錯:Cannot access child value on Newtonsoft.Json.Linq.JValue.

.Net利用Newtonsoft進行解析Json的快捷方法

好,如何取json中的值呢?

比如  我們如果要去total的值1   怎麼取?

obj[0]["total"].toString()      

如果要去取rows下的項目的數量呢?

obj[0]["rows"].count()      

如果要取rows的第一項的value的值呢?

obj[0]["rows"][0]["value"].toString()      
學會了嗎?很靈活簡單,類似數組的用法。      

最後,Newtonsoft還可以把object(包括list和枚舉等)轉換成json

JsonConvert.SerializeObject(object);