C#中实现Json序列化与反序列化的几种方式
作者:野牛程序员:2023-12-25 12:24:55C#阅读 2538
使用Json.NET库:
using Newtonsoft.Json; // 序列化 string json = JsonConvert.SerializeObject(obj); // 反序列化 T obj = JsonConvert.DeserializeObject<T>(json);
使用System.Text.Json (从.NET Core 3.0及更高版本开始):
// 序列化 string json = JsonSerializer.Serialize(obj); // 反序列化 T obj = JsonSerializer.Deserialize<T>(json);
JavaScriptSerializer (仅限.NET Framework):
using System.Web.Script.Serialization; // 序列化 var serializer = new JavaScriptSerializer(); string json = serializer.Serialize(obj); // 反序列化 T obj = serializer.Deserialize<T>(json);
DataContractJsonSerializer (仅限.NET Framework):
using System.Runtime.Serialization.Json; using System.IO; // 序列化 var serializer = new DataContractJsonSerializer(typeof(T)); using (MemoryStream stream = new MemoryStream()) { serializer.WriteObject(stream, obj); string json = Encoding.UTF8.GetString(stream.ToArray()); } // 反序列化 using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(json))) { T obj = (T)serializer.ReadObject(stream); }
使用JsonSerializerSettings进行自定义设置 (Json.NET):
// 序列化 string json = JsonConvert.SerializeObject(obj, new JsonSerializerSettings { Formatting = Formatting.Indented, TypeNameHandling = TypeNameHandling.All // 如果需要保留类型信息 }); // 反序列化 T obj = JsonConvert.DeserializeObject<T>(json, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All // 如果序列化时保留了类型信息 });
以上代码示例可以根据具体需求选择适合的方式,Json.NET通常是最常用的选择,而在.NET Core及更高版本中,System.Text.Json提供了更快的性能。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892