1. Newtonsoft.Json 介绍
Newtonsoft.Json(俗称 Json.NET)是 .NET 生态开源 JSON 序列化/反序列化组件
- 2006 年发布首个版本 Json.NET 1.0.1,现主流版本迭代至 10+
- 最初兼容 .NET 2.0,适配几乎所有 .NET 框架(Framework/.NET Core/.NET 5+)
- 程序集:
Newtonsoft.Json.dll,通过 NuGet 安装使用 - 早期源码托管于 CodePlex,现已迁移至 GitHub,大量企业项目广泛使用
2. JSON 是什么
JSON(JavaScript Object Notation,JS对象标记)
- 轻量级、语言无关的数据交换文本格式,并非 JavaScript 专属
- 核心结构:键值对
key:value;支持对象{}、数组[]嵌套
{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,"students":[{"name":"tom"},{"name":"bill"}]}Code language: C# (cs)
二、实体类定义(对应JSON结构)
Person.cs(学生对象)
namespace NewtonsoftDemo
{
public class Person
{
public string name { set; get; }
}
}Code language: C# (cs)
WebInfo.cs(外层主体对象)
namespace NewtonsoftDemo
{
public class WebInfo
{
public string webname { set; get; }
public string website { set; get; }
public int age { set; get; }
public Person[] students { set; get; }
}
}Code language: C# (cs)
例子-对象序列化为JSON
protected void Page_Load(object sender, EventArgs e)
{
// 1. 实例化实体对象并赋值
WebInfo webInfo = new WebInfo();
webInfo.age = 4;
webInfo.webname = "FoxDevelop";
webInfo.website = "foxdevelop.com";
webInfo.students = new Person[]
{
new Person { name = "TOM" },
new Person { name = "JACK" }
};
// 2. Newtonsoft.Json 底层写法:借助JsonWriter序列化
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webInfo);
string json = sw.GetStringBuilder().ToString();
}Code language: C# (cs)
日常更简洁的简化写法
Newtonsoft.Json 提供静态工具方法,替代手动创建 JsonWriter:
// 一行完成序列化,开发最常用
string json = JsonConvert.SerializeObject(webInfo);Code language: C# (cs)
输出JSON结果
{
"webname": "FoxDevelop",
"website": "foxdevelop.com",
"age": "4",
"students": [
{"name":"TOM"},
{"name":"JACK"}
]
}Code language: C# (cs)
其他
- System.Text.Json:.NET Core 3.0 之后微软内置JSON库;但老旧 .NET Framework 项目依然普遍使用 Newtonsoft.Json
- 特性:支持属性别名、忽略字段、日期格式化、循环引用处理等高级功能