zoukankan      html  css  js  c++  java
  • C# dynamic类型序列化和反序列化之Newtonsoft.Json,动态解析远端返回的jSON数据

    一、说明

    1.Newtonsoft.Json 中的Linq To Json中提供了方便的json数据查询、修改等操作。

    例如:JObject,JArray

    2.在JObject.FromObject()或JArray.FromObject()中也提供了对dynamic类型的支持。

    二、dynamic转json字符串处理

    1.  
      using Newtonsoft.Json;
    2.  
      using Newtonsoft.Json.Linq;

    1.使用JObject对象

    1.  
      dynamic obj = new JObject();
    2.  
      obj.name = "张三丰";
    3.  
      obj.age = 10;
    4.  
      obj.birthday = DateTime.Now;
    5.  
       
    6.  
      Console.WriteLine(obj.ToString());

    输出结果:

    1.  
      {
    2.  
      "name": "张三丰",
    3.  
      "age": 10,
    4.  
      "birthday": "2017-07-29T16:39:47.4549601+08:00"
    5.  
      }


    2.使用JObject.FromObject()

    1.  
      dynamic obj = new System.Dynamic.ExpandoObject();
    2.  
      obj.name = "张三丰";
    3.  
      obj.age = 10;
    4.  
      obj.birthday = DateTime.Now;
    5.  
       
    6.  
      string result = JObject.FromObject(obj).ToString();
    7.  
      Console.WriteLine(result);

    输出结果:同上

    三、将json字符串发序列化为dynamic类型

    1.  
      string json = @"
    2.  
      {
    3.  
      'Title': 'Json.NET is awesome!',
    4.  
      'Author': {
    5.  
      'Name': 'James Newton-King',
    6.  
      'Twitter': '@JamesNK',
    7.  
      'Picture': '/jamesnk.png'
    8.  
      },
    9.  
      'Date': '2013-01-23T19:30:00',
    10.  
      'BodyHtml': '<h3>Title!</h3> <p>Content!</p>'
    11.  
      }
    12.  
      ";
    13.  
      dynamic blogPost = JObject.Parse(json);
    14.  
      string title = blogPost.Title;
    15.  
      Console.WriteLine(title); //输出:Json.NET is awesome!
    16.  
      Console.WriteLine(blogPost.Date); //输出:2013/1/ 23 19:30:00


    官方示例:

    Querying JSON with dynamicCreate JSON with dynamic

    更多:

    C# Newtonsoft.Json JsonSerializerSettings配置序列化操作

    C#Json序列化、反序列化之Dictionary 字典类型

    C# Newtonsoft.Json之LINQ To Json实例(二)

  • 相关阅读:
    C# UDP实现通信的方法
    Leetcode 559. N叉树的最大深度
    101. 对称二叉树
    108. 将有序数组转换为二叉搜索树
    剑指 Offer 55
    Linux
    Linux
    Linux
    Linux
    Linux
  • 原文地址:https://www.cnblogs.com/yibinboy/p/9744562.html
Copyright © 2011-2022 走看看