NewtonSoft.JSON官方手册中文版【连载2】

即将推出本人原译的NewtonSoft.JSON官方手册中文版完整文档(.chm格式),敬请期待!

序列化和反序列化JSON

在JSON文本和某个.NET对象之间转换,最快捷的方法是使用JsonSerializer。JsonSerializer把.NET对象转换为它们的JSON等价物,并转换回来,方法是把.NET对象的属性名映射到JSON属性名,并复制它们的值。

  • JsonConvert
  • JsonSerializer

JsonConvert

在一些情形中,你要把.NET对象转换成JSON字符串、从JSON字符串中取得.NET对象,JsonConvert中的SerializeObject()方法和DeserializeObject()方法提供了简便易用的包装器,包装了JsonSerializer。

利用JsonConvert序列化和反序列化JSON

Product product = new Product();
product.Name = "Apple";
product.ExpiryDate = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string output = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "ExpiryDate": "2008-12-28T00:00:00",
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}
Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);

SerializeObject和DeserializeObject两者都有重载方法,取用一个JsonSerializerSettings对象为参数。下面的JsonSerializerSetters让你使用很多JsonSerializer设置列表,与此同时,依然使用简单的序列化方法。

JsonSerializer

欲对如何序列化一个对象有更多的控制,可以直接使用JsonSerializer。JsonSerializer可以利用JsonTextWriter方法直接把JSON文本写成一个流,或者利用JsonTextReader方法从流中读取JSON文本。也可以使用其它类型的JsonWriter,譬如JTokenReader、JTokenWriter方法,它们把你的对象转换为LINQ,或者从LINQ中转换得JSON对象。或者BsonReader、BsonWriter方法,它们把JSON转换为BSON,或者从BSON中转换得JSON对象。

利用JsonSerializer把JSON序列化为流

Product product = new Product();
product.ExpiryDate = new DateTime(2008, 12, 28);
JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());
serializer.NullValueHandling = NullValueHandling.Ignore;
using (StreamWriter sw = new StreamWriter(@"c:\json.txt"))
using (JsonWriter writer = new JsonTextWriter(sw))
{
  serializer.Serialize(writer, product);
  // {"ExpiryDate":new Date(1230375600000),"Price":0}
}

JsonSerializer具有很多属性,可以用它们来自定义如何序列化JSON。通过JsonSerializerSettings重载,这些属性也可以与JsonConvert方法配合使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值