Json.Net提供2种方式进行Json和.Net对象之间的转换
JsonConver
一个比较简单的方法,用于一般场景,提供SerializeObject()和DeserializeObject()方法进行序列化和反序列化。
这是JsonSerialIzer的一个简单的封装。
用法如下:
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类型参数,支持使用这个简单方法的时候,仍然可以使用JsonSerializer的一些设置。
JsonSerializer
为了更好地控制这个对象如何转换,可以直接使用JsonSerializer。
JsonSerializer通过JsonTextReader和JsonTextWriter可以直接进行Json和字节流之间的转换。
其它JsonReader和JsonWriter也可以使用,如:
JTokenReader/JTokenWriter用于对象与LINQ to JSON对象之间的转换;
BsonReader/BsonWriter用于对象与BSON之间的转换。
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上使用。
扫描二维码关注公众号,回复:
887077 查看本文章