介绍
Json.NET 是用于.NET平台的高效的Json 框架。更多资源查看:http://www.newtonsoft.com/json/help/html/SerializingJSON.htm
优点和功能
- .net 对象和Json对象之间相互灵活的Json序列化。
- Linq到Json的手动读写Json对象。
- 高效率:比.Net的内置Json序列化快。
- 缩进式写入,便于阅读Json
- Json与XML相互转化
- 支持.net 2, .net 3.5, .net 4, .net 4.5, Silverlight, Windows Phone 和Windows 8 Store.
序列化和反序列化Json
JsonConvert
简单的Json字符串和.Net对象之间的相互转换, JsonConvert 下的SerializeObject() 和 DeserializeObject() 提供了非常简单的封装方法。
Serializing and Deserializing JSON with JsonConvert
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);
JsonSerializer
对与更加复杂的对象序列化操作,可以直接使用JsonSerializer 。 JsonSerializer 方法能够通过 JsonTextReader 和 JsonTextWriter直接读写Json 文本。其他的json写操作也可以使用,如:JTokenReader/JTokenWriter,能够实现LINQ和Json 对象相互转换; BsonReader/BsonWriter 能够实现BSON和Json 相互转化。
Serializing JSON to a Stream with JsonSerializer
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}
}