在Json文本和.Net对象之间转换最快的方法是试用JsonSerializer。
JsonSerializer通过将.Net对象属性名称映射到Json属性名称,并为其复制值,将.Net对象转换为其Json等效项并再次返回。
- JsonConvert 使用其需要添加引用 Newtonsoft.Json
- JsonSerializer
对于要与JSON字符串进行转换的简单方案,请使用 SerializeObject()和 DeserializeObject() JsonConvert上的方法提供了一个易于使用的JsonSerializer包装器
使用JsonConvert序列化和反序列化JSON
Serializing and Deserializing JSON with JsonConvert Copy 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文本到流。也可以使用其他类型的JsonWriters,例如 JTokenReader / JTokenWriter,将对象转换为LINQ转换为JSON对象,或 转换为BsonReader / BsonWriter,以转换为BSON和从BSON转换。
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} }
参阅:https://www.newtonsoft.com/json/help/html/SerializingJSON.htm