豆豆酱学C#笔记之Newtonsoft.Json(二)
大家好呀,祝大家十一快乐!小贱从杭州萧山国际机场发来贺电。最近我又重新陷入了学东西、做项目、学东西这样的循环里,感觉脑子都成浆糊了,但我还是要继续给大家写博客。废话不多说,言归正传。上次我真是犯糊涂了,关于Newtonsoft.Json的用法应该先从比较形象的类转化开始写,让大家先有个了解,所以这次就把这部分内容补上。
1. Json字符串转成对应类
下面我通过一个例子来演示如何将Json字符串转换为对应的类。这个Json内容描述了员工(Employee)的名字(firstName)和姓氏(lastName)。
using Newtonsoft.Json; // 引入Newtonsoft.Json命名空间
// 根据JSON数据的信息定义一个类,用来存储信息
public class Employee
{
public string firstName; // 员工名字
public string lastName; // 员工姓氏
}
class Program
{
static void Main(string[] args)
{
// 定义一个JSON字符串
string json = "[{\"firstName\": \"John\",\"lastName\": \"Doe\"},{\"firstName\": \"Anna\",\"lastName\": \"Smith\"},{\"firstName\": \"Peter\",\"lastName\": \"Jones\"}]";
// 因为JSON中会有不止一个的Employee,所以我们用一个集合来存储
List<Employee> list = new List<Employee>();
// 这里JsonConvert会很智能的将JSON中的属性转换为类的属性
list = JsonConvert.DeserializeObject<List<Employee>>(json);
// 将每一个Employee的firstName和lastName打印出来
foreach (Employee child in list)
{
Console.WriteLine(child.firstName);
Console.WriteLine(child.lastName);
}
Console.ReadKey(); // 保证命令行窗口不消失
}
}
方法解释
JsonConvert.DeserializeObject<List<Type>>(string json) 方法用于将Json字符串转换为指定类型的对象集合。其中,Type 是输出值的类型,json 是我们需要转化的Json字符串。
2. 类转成Json字符串
这与上面的过程相反,我们要将每个 Employee 对象以组的形式在Json字符串中表现出来,Employee 的属性自然就是组中的属性。
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
// 根据JSON数据的信息定义一个类,用来存储信息
public class Employee
{
public string firstName; // 员工名字
public string lastName; // 员工姓氏
}
class Program
{
static void Main(string[] args)
{
// 这一部分就是前面讲的将JSON转成一个类的集合,这里为了方便,就直接作为要转成JSON的内容了
string json = "[{\"firstName\": \"John\",\"lastName\": \"Doe\"},{\"firstName\": \"Anna\",\"lastName\": \"Smith\"},{\"firstName\": \"Peter\",\"lastName\": \"Jones\"}]";
List<Employee> list = new List<Employee>();
list = JsonConvert.DeserializeObject<List<Employee>>(json);
foreach (Employee child in list)
{
Console.WriteLine(child.firstName);
Console.WriteLine(child.lastName);
}
// 这一步就是将一个类的集合转成JSON格式的字符串
string lastJson = JsonConvert.SerializeObject(list);
Console.WriteLine(lastJson);
Console.ReadKey(); // 保证命令行窗口不消失
}
}
方法解释
JsonConvert.SerializeObject(List<Type> list) 方法用于将指定类型的对象集合转换为Json字符串。这里需要注意的是,参数是一个集合,因为有多个 Employee 对象就会有多个组,我们输入的是一个组的集合。
总结
今天介绍的内容是上次的补充。我们要知道,Newtonsoft.Json 不仅仅可以处理Json与XML之间的转化,它还能处理很多其他类型的转换。现在我们可以将Json字符串中的内容直接转换为类的字段或属性,这使得在项目中处理Json数据变得更加方便。
这次的内容就先到这里,后续内容待续。