当前位置:首页C# > 正文

C#中实现Json序列化与反序列化的几种方式

作者:野牛程序员:2023-12-25 12:24:55C#阅读 2538
  1. 使用Json.NET库:

using Newtonsoft.Json;

// 序列化
string json = JsonConvert.SerializeObject(obj);

// 反序列化
T obj = JsonConvert.DeserializeObject<T>(json);
  1. 使用System.Text.Json (从.NET Core 3.0及更高版本开始):

// 序列化
string json = JsonSerializer.Serialize(obj);

// 反序列化
T obj = JsonSerializer.Deserialize<T>(json);
  1. JavaScriptSerializer (仅限.NET Framework):

using System.Web.Script.Serialization;

// 序列化
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(obj);

// 反序列化
T obj = serializer.Deserialize<T>(json);
  1. 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);
}
  1. 使用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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击