JSON Serialization/Deserialization in C#

因爲對C#不是特別熟悉,但是最近寫個c#的demo,需要對獲取的的json字符串進行解析,開始使用Newtonsoft.Json.Linq嘗試了以下,但是感覺操作起來比較麻煩,尤其對與JSON結構比較深的情況。可能是習慣了其它語言的方式,很想能找到類似的方法。

最終瞭解到System.Web.Script.Serialization支持想要的功能([http://procbits.com/2011/04/21/quick-json-serializationdeserialization-in-c](http://procbits.com/2011/04/21/quick-json-serializationdeserialization-in-c))

首先,在工程中增加引用:System.Web.Extensions

針對比較簡單的JSON String

{
"some_number": 108.541, 
"date_time": "2011-04-13T15:34:09Z", 
"serial_number": "SN1234"
}

你可以用如下方式將它解析爲一個Dictionary :

using System.Web.Script.Serialization;

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string,string>>(jsonText);
Console.WriteLine(dict["some_number"]); //outputs 108.541

針對比較複雜的JSON String

{
"some_number": 108.541, 
"date_time": "2011-04-13T15:34:09Z", 
"serial_number": "SN1234"
"more_data": {
  "field1": 1.0
  "field2": "hello" 
  }
}

解析方式如下:

using System.Web.Script.Serialization;

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string,dynamic>>(jsonText);

Console.WriteLine(dict["some_number"]); //outputs 108.541
Console.WriteLine(dict["more_data"]["field2"]); //outputs hello

其中more_data字段被解析成一個Dictionary
另外,還可以使用另一種方式:

using System.Web.Script.Serialization;

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<dynamic>(jsonText);

Console.WriteLine(dict["some_number"]); //outputs 108.541
Console.WriteLine(dict["more_data"]["field2"]); //outputs hello

另外,Serialization 同樣比較簡單

using System.Web.Script.Serialization;

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<dynamic>(jsonText);

var json = jss.Serialize(dict);
Console.WriteLine(json)

如需轉載,請聲明,如有幫助,記得關注鐵柱,後面的內容更精彩

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章