C# dynamic类型序列化和反序列化之Newtonsoft.Json,动态解析远端返回的jSON数据

时间:2021-11-25 05:14:22

一、说明

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. 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. string result = JObject.FromObject(obj).ToString();
  6. 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>\r\n<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实例(二)