C#: Newtonsoft.Json库
2025-04-18 09:28:59
8
参考资料
Newtonsoft.Json库简介功能:
JSON与.NET对象相互转换
LINQ to JSON查询
高性能JSON读写
支持XML与JSON互转
支持BSON格式
核心类及功能:
JsonConvert:静态工具类,提供主要序列化方法
JsonSerializer:可配置的序列化器实例
JsonReader/JsonWriter:底层读写器
JObject/JArray:LINQ可查询的JSON对象
主要属性参数说明:
JsonSerializerSettings配置:
Formatting:缩进格式(None/Indented)
NullValueHandling:空值处理方式
DefaultValueHandling:默认值处理方式
ReferenceLoopHandling:循环引用处理
ContractResolver:自定义契约解析器
JsonConvert方法参数:
TypeNameHandling:类型信息处理
PreserveReferencesHandling:对象引用保留
基本使用方法:
序列化对象:
string json = JsonConvert.SerializeObject(obj);
反序列化:
var obj = JsonConvert.DeserializeObject<T>(json);
使用配置:
var settings = new JsonSerializerSettings { Formatting = Formatting.Indented, NullValueHandling = NullValueHandling.Ignore }; string json = JsonConvert.SerializeObject(obj, settings);
LINQ to JSON:
JObject jObj = JObject.Parse(json); string name = (string)jObj["name"];
安装方法:
通过NuGet包管理器安装:
Install-Package Newtonsoft.Json
示例解析:
基础序列化:
public class Person { public string Name { get; set; } public int Age { get; set; } } var person = new Person { Name = "John", Age = 30 }; string json = JsonConvert.SerializeObject(person); // 输出:{"Name":"John","Age":30}
复杂对象处理:
var settings = new JsonSerializerSettings { Formatting = Formatting.Indented, ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; var obj = new { Date = DateTime.Now, Items = new List<string> { "item1", "item2" } }; string json = JsonConvert.SerializeObject(obj, settings);
动态对象处理:
dynamic obj = new JObject(); obj.Name = "John"; obj.Age = 30; string json = obj.ToString();