欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSON Serialization/Deserialization in C#

程序员文章站 2022-05-18 19:25:53
因为对C#不是特别熟悉,但是最近写个c#的demo,需要对获取的的json字符串进行解析,开始使用Newtonsoft.Json.Linq尝试了以下,但是感觉操作起来比较麻烦,尤其对与JSON结构比较深的情况。可能是习惯了其它语言的方式,很想能找到类似的方法。 最终了解到System.Web.Scr ......

因为对c#不是特别熟悉,但是最近写个c#的demo,需要对获取的的json字符串进行解析,开始使用newtonsoft.json.linq尝试了以下,但是感觉操作起来比较麻烦,尤其对与json结构比较深的情况。可能是习惯了其它语言的方式,很想能找到类似的方法。

最终了解到system.web.script.serialization支持想要的功能(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)

如需转载,请声明,如有帮助,记得关注铁柱,后面的内容更精彩
JSON Serialization/Deserialization in C#