C#中实现Json序列化与反序列化的几种方式
作者:野牛程序员:2023-12-25 12:24:55C#阅读 2809
使用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

