Json学习笔记之在C#控制台程序解析Json文件

一、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<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并选择一个下载

 

posted @ 2021-04-08 16:20  一白梦人  阅读(484)  评论(0编辑  收藏  举报