1.JObject: 表示一个JSON对象,这是一种键值对无序集合,其中键为字符串,值可以是任何有效的JSON数据类型(如字符串、数字、布尔值、null、数组或另一个对象)。JObject提供了以强类型方式操作JSON对象的方法和属性,使你能够添加、移除、修改或查询其属性。
示例:
var json = @"{
'name': 'John Doe',
'age': 30,
'isEmployed': true
}";
JObject obj = JObject.Parse(json);
string name = (string)obj["name"]; // 获取name属性的值
int age = (int)obj["age"]; // 获取age属性的值
bool isEmployed = (bool)obj["isEmployed"]; // 获取isEmployed属性的值
obj["age"] = 31; // 修改age属性的值
obj.Add("address", "123 Main St."); // 添加新的address属性
2.JToken: 是 Newtonsoft.Json 库中所有JSON数据类型的基类,包括JObject、JArray、JValue等。它提供了通用的方法来访问、遍历和操作JSON数据。当你不确定JSON数据的具体类型时,可以使用JToken进行处理。
示例:
JToken token = obj["age"];
double value = token.Value<double>(); // 将token值转换为double类型
foreach (JToken childToken in token.Children())
{
// 遍历并处理子Token
}
3.JArray: 表示一个JSON数组,即有序的值列表。数组中的元素可以是任何有效的JSON数据类型。JArray提供了添加、删除、查询和修改数组元素的方法。
示例:
var jsonArray = JArray.Parse(@"[
'apple', 'banana', 'orange'
]");
string firstItem = (string)jsonArray[0]; // 获取第一个元素的值
jsonArray.Add("pear"); // 向数组末尾添加新元素
4.JsonConvert: 提供了一系列静态方法,用于在.NET对象与JSON字符串之间进行序列化(将对象转换为JSON字符串)和反序列化(将JSON字符串解析为.NET对象)。它支持多种数据类型、自定义转换器、日期格式化等高级功能。
示例:
// 序列化(对象转JSON)
Person person = new Person { Name = "John Doe", Age = 30 };
string personJson = JsonConvert.SerializeObject(person); // 输出:{"Name":"John Doe","Age":30}
// 反序列化(JSON转对象)
string json = "{\"Name\":\"Jane Smith\",\"Age\":25}";
Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json);
总结来说,JObject、JArray、JToken是Newtonsoft.Json库中用于操作JSON结构的核心类,分别对应JSON对象、JSON数组和所有JSON数据类型的基类。而JsonConvert类则提供了方便的序列化和反序列化方法,使得.NET对象与JSON字符串之间的转换变得简单易行。