signed

QiShunwang

“诚信为本、客户至上”

【Unity学习笔记】C#控制台程序解析Json文件

2021/6/3 15:00:49   来源:

声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨。可作参考,但不保证绝对正确。如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦

一、LitJson库介绍

LitJson库是用于将Json转换为对象或者将对象转换为Json的一个库。

官网:https://litjson.net/

二、类和方法介绍

2.1 JsonMapper类

 2.1.1JsonMapper类就是用于Json和对象互相转换的一个类,注意它的两个方法即可:

   ①ToJson(object obj) 将对象转换为Json。返回值为string,即转换好的json格式文本

   ②ToObject(string json) 将Json转换为对象。

 2.1.2ToObject(string json)方法有两种用法:

   ①如果想要将Json中描述的数据存储到具体的类或者数组中,就可以用泛型方法,传入类类型或数组类型ToObject(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并选择一个下载
在这里插入图片描述