zoukankan      html  css  js  c++  java
  • C#使用LitJson对Json数据解析

    官网:(json.org/json-zh.html   <可选中文>)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。


    1.首先建立一个txt文本文件作为json的媒介:

    json中使用[]表示数组结构,使用{}表示对象结构,使用 “键”:“值” 这中键值对的方式表示属性及值,各种结构间彼此使用 , 分隔。

    [
    {"name":"Json","age":20,"skill":"noting"},
    {"name":"Haria","age":24,"skill":"jump"},
    {"name":"Jsfg","age":42,"skill":"attack"}
    ]

    该结构定义了一个数组,里面包含了三个对象,每个对象下有name,age,skill三个属性和各自的值。


    2.这里再定义一个类用来対映json数据中包含的对象:

    通过重写了该类的ToString方法用来输出类的信息。

     1 class JsonObject
     2     {
     3         public string name { get; set; }
     4         public string skill { get; set; }
     5         public int age { get; set; }
     6         public override string ToString()
     7         {
     8             return string.Format("JsonObject:name:{0},age={1},skill={2}", name, age, skill);
     9         }
    10     }

    3.最后引入LitJson程序集,可以在Json官网下方找到下载,也可以使用vs NuGet来加载到程序中。

    这来有详细的官方引导:lbv.github.io/litjson/docs/quickstart.html

    通过JsonMapper.ToObject和JsonMapper.ToJson来实现json和对象之间的转换,通过JsonData来接收解析的数据,再使用遍历来取出JsonData中的数据。

     1 class Program
     2     {
     3         
     4         static void Main(string[] args)
     5         {
     6             List<JsonObject> jsonList = new List<JsonObject>();//JsonObject即为上述2中创建的类
     7             JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("JsonFile.txt"));//这里的JsonFile.txt文件即为上面1中的文本文件
     8 
     9             //通过索引的方式获取json中的信息,既可以使用索引位置,也可以使用索引键名
    10             foreach (JsonData item in jsonData)
    11             {
    12                 JsonObject JO = new JsonObject();
    13                 int age = int.Parse(item["age"].ToString());
    14                 JO.name = item[0].ToString();
    15                 JO.skill = item["skill"].ToString();
    16                 JO.age = age;
    17 
    18                 jsonList.Add(JO);
    19             }
    20 
    21             Console.WriteLine("
    通过索引来解析json:");
    22             foreach (JsonObject  jo in jsonList)
    23             {
    24                 Console.WriteLine(jo.ToString());   
    25             }
    26 
    27 
    28             //因为这里的json数据为一组对象,所以使用数组和泛型进行存储解析(json数据必须和类属性结构对应)
    29             JsonObject[] jsonObjectArray= JsonMapper.ToObject<JsonObject[]>(File.ReadAllText("JsonFile.txt"));
    30 
    31             List<JsonObject> jsonList2 =JsonMapper.ToObject<List<JsonObject>>(File.ReadAllText("JsonFile.txt"));
    32 
    33             Console.WriteLine("
    使用array数组:");
    34 
    35             foreach (var item in jsonObjectArray)
    36             {
    37                 Console.WriteLine(item);
    38             }
    39 
    40             Console.WriteLine("
    使用list集合:");
    41 
    42             foreach (var item in jsonList2)
    43             {
    44                 Console.WriteLine(item);
    45             }
    46 
    47 
    48             //将对象转换为json,再将json转换为对象
    49             JsonObject jsonObject = new JsonObject() { name = "哈撒kei", age = 22, skill = "万佛朝宗" };
    50 
    51             string json=JsonMapper.ToJson(jsonObject);
    52 
    53             JsonObject  jonsonObject = JsonMapper.ToObject<JsonObject>(json);
    54 
    55             Console.WriteLine("
    将对象转换为json(中文转换为ASCII码):" + json);//这里json会将中文转换为ASCII码
    56             Console.WriteLine("
    将json转换为对象:" + jonsonObject);
    57 
    58             Console.ReadKey();
    59         }
    60     }

    如果这些类容帮助到你了,希望您给予支持 o(^▽^)o

    当然也可以借助一些数据保存的插件将我们从繁琐的编码解脱出来,下面是一款不错的游戏数据保存加载插件

  • 相关阅读:
    上传gdb文件地理数据库所有图层到企业级空间库
    导出所有图层到gdb文件地理数据库
    sparkSQL报错org.apache.spark.sql.AnalysisException: Unable to generate an encoder for inner class `cn.itcast.spark.sql.Intro$People` without access to the scope that this class was defined in.
    java开发环境搭建
    qw
    SSM集成支付宝
    三次握手,四次挥手
    ASP.NET Core中的依赖注入#
    char是Java原始类型。char变量可以存储一个Unicode字符
    JAVA教程
  • 原文地址:https://www.cnblogs.com/Firepad-magic/p/5532650.html
Copyright © 2011-2022 走看看