Quick JSON Serialization/Deserialization in C#

*This outdated*. You should use FridayThe13th the best JSON parser for Silverlight and .NET 4.0.

You don’t need to download an additional libraryto serialize/deserialize your objects to/from JSON. Since .NET 3.5, .NET can do it natively.

Add a reference to your project to “System.Web.Extensions.dll”

Let’s look at this example JSON string:

1{
2    "some_number": 108.541,
3    "date_time": "2011-04-13T15:34:09Z",
4    "serial_number": "SN1234"
5}

You can deserialize the previous JSON into a dictionary like so:

1using System.Web.Script.Serialization;
2 
3var jss = new JavaScriptSerializer();
4var dict = jss.Deserialize<Dictionary<string,string>>(jsonText);
5 
6Console.WriteLine(dict["some_number"]); //outputs 108.541

So what if your JSON is a bit more complex?

1{
2    "some_number": 108.541,
3    "date_time": "2011-04-13T15:34:09Z",
4    "serial_number": "SN1234"
5    "more_data": {
6        "field1": 1.0
7        "field2": "hello"  
8    }
9}

Deserialize like so…

1using System.Web.Script.Serialization;
2 
3var jss = new JavaScriptSerializer();
4var dict = jss.Deserialize<Dictionary<string,dynamic>>(jsonText);
5 
6Console.WriteLine(dict["some_number"]); //outputs 108.541
7Console.WriteLine(dict["more_data"]["field2"]); //outputs hello

The field “more_data” gets deserialized into a Dictionary<string, object>.

You can actually just just deserialize like so:

1using System.Web.Script.Serialization;
2 
3var jss = new JavaScriptSerializer();
4var dict = jss.Deserialize<dynamic>(jsonText);
5 
6Console.WriteLine(dict["some_number"]); //outputs 108.541
7Console.WriteLine(dict["more_data"]["field2"]); //outputs hello

And everything still works the same. The only caveat is that you lose intellisense by using the “dynamic” data type.

Serialization is just as easy:

1using System.Web.Script.Serialization;
2 
3var jss = new JavaScriptSerializer();
4var dict = jss.Deserialize<dynamic>(jsonText);
5 
6var json = jss.Serialize(dict);
7Console.WriteLine(json);

Outputs…

1{
2    "some_number": 108.541,
3    "date_time": "2011-04-13T15:34:09Z",
4    "serial_number": "SN1234"
5    "more_data": {
6        "field1": 1.0
7        "field2": "hello"  
8    }
9}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值