現在異構系統之間的資料交換多采用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.
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuYGM2ETOjljMxcTZmVWZwUGMjZDN2gzNjNmY4QTYjF2YfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
好,如何取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);