原本感覺(jué)Newtonsoft.Json和.net自己的JavaScriptSerializer相差無(wú)幾,所以將工程里的Json都換成了JavaScriptSerializer來(lái)實(shí)現(xiàn),可是近幾日遇到一個(gè)需求.在反序列化時(shí)我并沒(méi)有預(yù)先定義好的類,而是要以字典形式讀取.
于是我自己實(shí)現(xiàn)了一個(gè)類,由于沒(méi)有模型對(duì)象,所以所有的Json讀取和檢測(cè)過(guò)程都要重新寫過(guò).
后來(lái)卻發(fā)現(xiàn)Newtonsoft中已經(jīng)提供了我需要的功能,甚至還提供了Json的Linq查詢.
下面用個(gè)實(shí)例來(lái)搞定它的讀寫
1.Json是這樣的
{title:123,body:456,list:{title:'這是一個(gè)標(biāo)題',body:'what'}}
2.我要將其中幾項(xiàng)都搞出來(lái),代碼:
static void Main(string[] args)
{
string str = "{title:123,body:456,list:{title:'這是一個(gè)標(biāo)題',body:'what'}}";
JObject o = JObject.Parse(str);
Console.WriteLine(o["title"]);
Console.WriteLine(o["body"]);
Console.WriteLine(o["list"]["title"]);
Console.WriteLine(o["list"]["body"]);
Console.ReadKey();
}
3.這樣就輸出了:
123
456
"這是一個(gè)標(biāo)題"
"what"
不足:字符串還是案字符串輸出帶"",但我想這也不是問(wèn)題.Trim就好了
基本Linq的都差不多,可以參考Json.net文檔.這個(gè)并未深入研究
string str = "{title:123,body:456,list:{title:'這是一個(gè)標(biāo)題',body:'what'}}";
JObject o = JObject.Parse(str);
var s =
from p in o.Children()
select p;
foreach (var item in s)
{
Console.WriteLine(item);
}
Console.ReadKey();
聯(lián)系客服