zoukankan      html  css  js  c++  java
  • c# json操作

    一、json配置

    解析json文件,这里我们以litJson为例,首先应安装litjson

    二、json简介(摘自百度百科)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#Java、JavaScript、PerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

    JSON 语法规则

    JSON 语法是 JavaScript 对象表示语法的子集。
    • 数据在键值对中
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组

    JSON 名称/值对

    JSON 数据的书写格式是:名称/值对。
    名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
    1
    "firstName":"John"
    这很容易理解,等价于这条 JavaScript 语句:
    1
    firstName="John"

    JSON 值

    JSON 值可以是:
    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null

    基础结构编辑

    JSON[1]  结构有两种结构[2] 
    json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
    1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
    2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
    经过对象、数组2种结构就可以组合成复杂的数据结构了。
     
    三、手写一个简单的json文件
     
    [
    {"id":2,"name":"天下无双","demage":123},
    {"id":3,"name":"绝对零度","demage":200},
    {"id":4,"name":"冰封万里","demage":325}
    ]

    四、解析json文件

    创建一个对应的Skill类

    class Skill
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Demage { get; set; }
    
            public override string ToString()
            {
                return "Id:" + Id + " Name:" + Name + " Demage:" + Demage;
            }
        }

    解析文件

    class Program
        {
            static void Main(string[] args)
            {
                List<Skill> skillList = new List<Skill>();
                //右键引用,选择管理Nuget程序包,搜索litjson安装
                JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json.txt"));
                foreach (JsonData temp in jsonData)
                {
                    Skill skill = new Skill();
                    JsonData idValue = temp["id"];
                    JsonData nameValue = temp["name"];
                    JsonData demageValue = temp["demage"];
                    int id = int.Parse(idValue.ToString());
                    string name = nameValue.ToString();
                    int demage = int.Parse(demageValue.ToString());
                    skill.Id = id;
                    skill.Name = name;
                    skill.Demage = demage;
                    skillList.Add(skill);
                }
    
                foreach (var s in skillList)
                {
                    Console.WriteLine(s);
                }
            }
        }

    五、使用泛型解析Json

    注意:Skill类中的属性名应该和json文件中的键名相同

    class Skill
        {
            public int id { get; set; }
            public string name { get; set; }
            public int demage { get; set; }
    
            public override string ToString()
            {
                return "Id:" + id + " Name:" + name + " Demage:" + demage;
            }
        }
    //使用泛型解析
                Skill[] skillList = JsonMapper.ToObject<Skill[]>(File.ReadAllText("json.txt"));
                foreach (var item in skillList)
                {
                    Console.WriteLine(item);
                }

    是不是用泛型简单很多呢?

  • 相关阅读:
    maven打包不执行测试用例
    maven不打包子模块资源文件
    mvn打包时添加version和profile
    eclipse控制台中文乱码解决方法
    eclipse常用插件
    Spring Boot系列之-logging
    Spring Boot系列之-profile
    Spring Boot系列之-helloword入门
    sqlite入门
    解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element
  • 原文地址:https://www.cnblogs.com/zhangbaochong/p/4926284.html
Copyright © 2011-2022 走看看