• C# 技巧(3) C# 操作 JSON


    RestAPI中, 经常需要操作json字符串,  需要把json字符串"反序列化"成一个对象, 也需要把一个对象"序列化"成一字符串。

    C# 操作json,  比较简单。  本文介绍几种方法

    阅读目录

    步骤

    Json 字符串 反序列化成对象 共需要2步:

    第一步:建立相应的实体类

    第二步: 调用方法把Json字符串"反序列化"成对象

    了解json的语法

    首先要了解json的语法,这样才能知道怎么创建实体类.

    Json 的语法很简单, 就四条

    • 数据在名称/值对中
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组

    创建实体类的例子

    {"FirstName":"小坦克","LastName":"Tank","Age":30}

    相应的实体类可以为

        public class Person 
        {
            public String FirstName
            { get; set; }
    
            public String LastName
            { get; set; }
    
            public int Age
            { get; set; }
        }

     

    自动生成JSON的实体类

    一个复杂的实体类,我们自己去写的话,可能需要1个小时以上。 那有没有工具能直接生成实体类呢,这样能方便太多了。  当然有

    http://jsonclassgenerator.codeplex.com/  ----开源的winform工具。

     

    使用第三方工具 Newtonsoft.Json.dll

    优点:  使用非常方便.   看个例子就知道怎么用了

    下载地址   http://james.newtonking.com/json

    代码示例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Newtonsoft.Json;
    
    namespace JsonDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                string personJson = "{ 'FirstName': '小坦克','LastName':'Tank xiao', 'Age':'30', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]}";
    
                string allMoveJson = @"[{ 'FirstName': '小坦克','LastName':'Tank xiao', 'Age':'30', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]},{
                                  'FirstName': '小坦克2','LastName':'Tank xiao2', 'Age':'40', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]}]";
    
                // 反序列化 单个对象
                Person oneMovie = JsonConvert.DeserializeObject<Person>(personJson);
    
                // 反序列化 对象集合
                List<Person> allMovie = JsonConvert.DeserializeObject<List<Person>>(allMoveJson);
    
                Console.WriteLine(oneMovie.FirstName);
                Console.WriteLine(allMovie[1].FirstName);
    
                // 序列化
                string afterJson = JsonConvert.SerializeObject(allMovie);
            }
        }
    
    
        public class Person
        {
            public String FirstName
            { get; set; }
    
            public String LastName
            { get; set; }
    
            public int Age
            { get; set; }
    
            public List<Book> Books
            { get; set; }
        }
    
        public class Book
        {
            public string BookName
            { get; set; }
    
            public string Price
            { get; set; }
        }
    }
     
  • 相关阅读:
    level trigger 与 edge trigger 的区别
    使用ifstream时碰到的一个小问题
    转一篇 sed one line
    select(poll)效率,与异步网络IO,AIO, libevent, epoll
    类的成员函数指针的使用
    awk 的OFS使用 小 tips
    一句话打通所有机器,小脚本
    usleep sleep函数会重置clock 的返回值
    qstore 的 chunk重构小记
    判断质数的方法
  • 原文地址:https://www.cnblogs.com/TankXiao/p/3637495.html
Copyright © 2020-2023  润新知