ToB企服应用市场:ToB评测及商务社交产业平台

标题: C# newtonsoft.json如何使用JObject、JArray 详细教程 [打印本页]

作者: 雁过留声    时间: 2024-12-5 01:18
标题: C# newtonsoft.json如何使用JObject、JArray 详细教程
在C#中,Newtonsoft.Json 是一个盛行的JSON处理库,允许你解析、创建和操作JSON数据。JObject 和 JArray 是该库中的两个核心类,分别用于表示JSON对象和JSON数组。下面是如何使用它们的详细教程。
1. 引入 Newtonsoft.Json 库

起首,你必要在项目中安装 Newtonsoft.Json 包。在 .NET 项目中可以使用 NuGet 安装:
  1. Install-Package Newtonsoft.Json
复制代码
2. 使用 JObject 处理 JSON 对象

JObject 用于表示和操作 JSON 对象。可以通过解析 JSON 字符串来创建 JObject,也可以手动构建。
示例1:解析 JSON 字符串为 JObject

假设有一个如下的 JSON 字符串:
  1. {
  2.   "name": "Alvin",
  3.   "age": 30,
  4.   "skills": ["C#", "Python", "Java"]
  5. }
复制代码
解析它为 JObject:
  1. using Newtonsoft.Json.Linq;
  2. string json = @"{
  3.     'name': 'Alvin',
  4.     'age': 30,
  5.     'skills': ['C#', 'Python', 'Java']
  6. }";
  7. // 将JSON字符串解析为JObject
  8. JObject jsonObject = JObject.Parse(json);
  9. // 访问属性
  10. string name = (string)jsonObject["name"];
  11. int age = (int)jsonObject["age"];
  12. JArray skills = (JArray)jsonObject["skills"];
  13. // 输出信息
  14. Console.WriteLine($"Name: {name}, Age: {age}");
  15. foreach (var skill in skills)
  16. {
  17.     Console.WriteLine($"Skill: {skill}");
  18. }
复制代码
示例2:手动创建 JObject

你也可以直接创建一个 JObject,而不是从字符串解析:
  1. using Newtonsoft.Json.Linq;
  2. JObject jsonObject = new JObject();
  3. jsonObject["name"] = "Alvin";
  4. jsonObject["age"] = 30;
  5. jsonObject["skills"] = new JArray("C#", "Python", "Java");
  6. // 转换为字符串
  7. string jsonString = jsonObject.ToString();
  8. Console.WriteLine(jsonString);
复制代码
3. 使用 JArray 处理 JSON 数组

JArray 用于表示和操作 JSON 数组。
示例1:解析 JSON 数组字符串为 JArray

  1. [
  2.   { "name": "Alvin", "age": 30 },
  3.   { "name": "Tom", "age": 25 }
  4. ]
复制代码
解析为 JArray:
  1. using Newtonsoft.Json.Linq;
  2. string jsonArray = @"[
  3.     { 'name': 'Alvin', 'age': 30 },
  4.     { 'name': 'Tom', 'age': 25 }
  5. ]";
  6. // 解析为JArray
  7. JArray array = JArray.Parse(jsonArray);
  8. // 遍历数组
  9. foreach (JObject person in array)
  10. {
  11.     string name = (string)person["name"];
  12.     int age = (int)person["age"];
  13.     Console.WriteLine($"Name: {name}, Age: {age}");
  14. }
复制代码
示例2:手动创建 JArray

  1. using Newtonsoft.Json.Linq;
  2. JArray jsonArray = new JArray();
  3. JObject person1 = new JObject();
  4. person1["name"] = "Alvin";
  5. person1["age"] = 30;
  6. JObject person2 = new JObject();
  7. person2["name"] = "Tom";
  8. person2["age"] = 25;
  9. jsonArray.Add(person1);
  10. jsonArray.Add(person2);
  11. Console.WriteLine(jsonArray.ToString());
复制代码
4. 访问、修改和删除 JObject 和 JArray 中的值

访问和修改 JObject

你可以使用索引器来访问和修改 JObject 中的值:
  1. jsonObject["name"] = "John"; // 修改值
  2. Console.WriteLine(jsonObject["name"]); // 访问值
复制代码
访问和修改 JArray

可以通过索引访问 JArray 中的元素:
  1. jsonArray[0]["name"] = "Alice"; // 修改第一个对象的name属性
  2. Console.WriteLine(jsonArray[0]["name"]); // 访问第一个对象的name属性
复制代码
删除 JObject 中的值

使用 Remove 方法删除 JObject 中的属性:
  1. jsonObject.Remove("age"); // 删除age属性
复制代码
删除 JArray 中的元素

可以通过索引删除 JArray 中的元素:
  1. jsonArray.RemoveAt(1); // 删除数组中第二个元素
复制代码
5. 完整示例

以下是一个完整的例子,展示了如何使用 JObject 和 JArray 来处理 JSON 数据:
  1. using Newtonsoft.Json.Linq;
  2. class Program
  3. {
  4.     static void Main()
  5.     {
  6.         string json = @"{
  7.             'name': 'Alvin',
  8.             'age': 30,
  9.             'skills': ['C#', 'Python', 'Java']
  10.         }";
  11.         // 解析为JObject
  12.         JObject jsonObject = JObject.Parse(json);
  13.         // 访问属性
  14.         string name = (string)jsonObject["name"];
  15.         int age = (int)jsonObject["age"];
  16.         JArray skills = (JArray)jsonObject["skills"];
  17.         // 修改属性
  18.         jsonObject["name"] = "John";
  19.         jsonObject["age"] = 35;
  20.         // 输出修改后的JSON
  21.         Console.WriteLine(jsonObject.ToString());
  22.         // 遍历skills数组
  23.         foreach (var skill in skills)
  24.         {
  25.             Console.WriteLine($"Skill: {skill}");
  26.         }
  27.         // 添加新技能
  28.         skills.Add("Go");
  29.         // 删除age属性
  30.         jsonObject.Remove("age");
  31.         // 输出最终的JSON
  32.         Console.WriteLine(jsonObject.ToString());
  33.     }
  34. }
复制代码
总结



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4