Json学习笔记之在C#控制台程序解析Json文件
一、LitJson库介绍
LitJson库是用于将Json转换为对象或者将对象转换为Json的一个库。
二、类和方法介绍
2.1 JsonMapper类
2.1.1JsonMapper类就是用于Json和对象互相转换的一个类,注意它的两个方法即可:
①ToJson(object obj) 将对象转换为Json。返回值为string,即转换好的json格式文本
②ToObject(string json) 将Json转换为对象。
2.1.2ToObject(string json)方法有两种用法:
①如果想要将Json中描述的数据存储到具体的类或者数组中,就可以用泛型方法,传入类类型或数组类型ToObject<T>(string) 来转换为具体的对象或数组。
要注意的是,Json中的键值对中的键名要和要转换的类中的属性名一模一样才行。
Person[] persons = JsonMapper.ToObject<Person[]>(File.ReadAllText("技能信息.json"));//除了数组也可以用List foreach(Person person in persons) { Console.WriteLine("id:" + person.Id); Console.WriteLine("name:" + person.Name); Console.WriteLine("damage:" + person.Damage); }
②如果没有具体的类或者不想要传入具体的类,就选择非泛型方法。获取一个JsonData类型的返回值。JsonData是一个通用类型,它可以指向Json中支持的所有类型数据。
我们可以通过JsonData对象使用索引的器的方式访问指定元素,返回值依然是JsonData类型对象。如果JsonData对应数组,那么就用数字索引获取值。如果JsonData对应对象,就可以用数字或键名(属性名)来获取对应值。如下列子:
/*Json文件内容 [ {"Id":1,"Name":"大锤","Damage":123}, {"Id":2,"Name":"毛妹","Damage":325}, {"Id":3,"Name":"源氏","Damage":321} ] */ //获取到最外层数组 JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("技能信息.json")); //jsonData[0]为第一个对象,jsonData[0][1]为第一个对象的第2个属性 //只能强制转换为基本数据类型,因此要获取到值才行。不能转换为自定义对象 string str = (string)jsonData[0][1]; Console.WriteLine(str); //data为数组中的对象 foreach(JsonData data in jsonData) { Console.WriteLine("Id:" + data["Id"]); Console.WriteLine("Name:" + data["Name"]); Console.WriteLine("Damage:" + data["Damage"]); }
运行结果:
三、如何引入库文件
引入解析Json文件的库:在项目的引用项上右键,打开NuGet包管理器,搜索litjson并选择一个下载