• C# json


    一:先说说什么是json

      json是一种格式

    二:那json格式有几种载体      

      1.json对象

               一个没有顺序的“键/值”,{   }  形式

               {}里每一个“键”的后面,有一个冒号,并且使用逗号来分隔多个键值对。

               例如:var user = {"name":"Manas","gender":"Male","birthday":"1987-8-8"}   

          2.json数组

               设置值的顺序,一个数组以中括号"["开始,并以中括号"]"结束,

               并且所有的值使用逗号分隔,

               例如:

                       var userlist = [

                                               {"user":{"name":"Manas","gender":"Male","birthday":"1987-8-8"}}, 
                                               {"user":{"name":"Mohapatra","Male":"Female","birthday":"1987-7-7"}}

                                               ]

          3.json字符串

                任意数量的Unicode字符,使用引号做标记,并使用反斜杠来分隔。

                (注意: 引号  逗号  冒号  均为英文状态下半角符号, 且只能是双引号 )

                例如: var userlist = "{"ID":1,"Name":"Manas","Address":"India"}" 

    三:json在C#中的应用

      1. Nuget包管理=>添加  Newtonsoft.Json

      2. 引入命名空间

      3.定义json数据里的对应实体类

      public class Student
         {  
            public int ID { get; set; }
     
            public string Name { get; set; }
    
            public int Age { get; set; }
    
            public string Sex { get; set; }
         }

      4.序列化或者反序列化实体对象,得到我们所要的结果

      两类应用:单个实体对象、实体对象集合,不同的处理方式

        单个实体对象的处理:

        Student one = new Student()
        { ID = 1, Name = "武松", Age = 250, Sex = "" }; 
    
        //序列化得到json字符串
        string jsonData = JsonConvert.SerializeObject(one); 
        string str = "{"ID":2,"Name":"鲁智深","Age":230,"Sex":"男"}";
    
        //反序列化得到C#对象
        Student two = JsonConvert.DeserializeObject<Student>(str);
        Console.WriteLine(string.Format("学生信息  ID:{0},姓名:{1},年龄:{2},性别:{3}",two.ID,two.Name, two.Age,two.Sex));//显示结果
        //如果想获取key-vaule可以这么写
      IDictionary<string, JToken> data = JsonConvert.DeserializeObject<JObject>(str);
       foreach (var item in data)
      {
           Console.WriteLine(学生信息  Key:{0},Vaule:{1},item.Key, item.Vaule);                         
      } 

        实体对象集合的处理:

       List<Student> oneList = new List<Student>() {
            new Student{ ID = 1, Name = "武大", Age = 260, Sex = "" },
            new Student{ ID = 2, Name = "武二", Age = 250, Sex = "" },
            new Student{ ID = 3, Name = "武三", Age = 240, Sex = "" }
       }; //定义对象
    
        string jsonData = JsonConvert.SerializeObject(oneList); 
       List<Student> twoList = JsonConvert.DeserializeObject<List<Student>>(jsonData);
    
       foreach(Student stu in twoList)
       {
            Console.WriteLine(
            string.Format("学生信息  ID:{0},姓名:{1},年龄:{2},性别:{3}",
                                         stu.ID, stu.Name, stu.Age, stu.Sex));//显示结果   
        }

        

        

  • 相关阅读:
    【转】Android系统中Fastboot和Recovery所扮演的角色。
    【转】Android ROM分析(1):刷机原理及方法
    【转】ANDROIDROM制作(一)——ROM结构介绍、精简和内置、一般刷机过程
    【转】使用fastboot命令刷机流程详解
    检测是否安装或者开启flash
    CentOS中/英文环境切换教程(CentOS6.8)
    id: cannot find name for user ID xxx处理办法
    linux重命名所有find查找到的文件/文件夹
    linux过滤旧文件中的空行和注释行剩余内容组成新文件
    CentOS和AIX查看系统序列号
  • 原文地址:https://www.cnblogs.com/HansZimmer/p/11832830.html
Copyright © 2020-2023  润新知