JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于存储和交换文本信息。它比XML更小、更快、更易解析。
JSON语法规则:
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true或false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
1.引入LitJson工具包
右键工程 - NuGet包管理器 - 搜索LitJson - 点击安装。
2.创建Json文件
创建名称是"TextFile1.txt"的文档,设置属性“复制到输出目录 - 如果较新则复制”。在工程运行时,会自动将该txt文件复制到bin下面。
[
{"ID":201801,"Name":"April","Level":2},
{"ID":201802,"Name":"Harris","Level":3}
]
3. 解析Json文件
3.1 JsonMapper
JsonMapper.ToObject()实现解析。
class Program
{
static void Main(string[] args)
{
JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("TextFile1.txt"));
List<Student> students = new List<Student>();
foreach (JsonData item in jsonData)
{
JsonData IDvalue = item["ID"];
JsonData NameValue = item["Name"];
JsonData Levelvalue = item["Level"];
Student student = new Student()
{
ID = Int32.Parse(IDvalue.ToString()),
Name = NameValue.ToString(),
Level = Int32.Parse(Levelvalue.ToString())
};
students.Add(student);
}
foreach (var item in students)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
运行结果
3.2 泛型JsonMapper
将List<Student>作为类型传入JsonMapper,可以得到和3.1相同的结果。
static void Main(string[] args)
{
//使用泛型解析Json
List<Student> students = JsonMapper.ToObject<List<Student>>(File.ReadAllText("TextFile1.txt"));
foreach (var item in students)
{
Console.WriteLine(item);
}
}
当然,将List<Student>换成Student[],也是可以的。
static void Main(string[] args)
{
//使用泛型解析Json
Student[] students = JsonMapper.ToObject<Student[]>(File.ReadAllText("TextFile1.txt"));
foreach (var item in students)
{
Console.WriteLine(item);
}
}
运行结果
4. 将对象转化为Json
使用JsonMapper.ToJson()实现从对象到Json的转化。
static void Main(string[] args)
{
//将对象转化为Json格式
Student stu = new Student()
{
ID = 201803,
Name = "Amy",
Level = 4
};
string stuJson = JsonMapper.ToJson(stu);
Console.WriteLine(stuJson);
}
运行结果