.net 中的 json 处理

今天一个非开发口的同事在问.net里的Json是怎么处理的。简单做了个说明:

 

Json 在 .net 里就是字符串,但有三方类库(如:Newtonsoft.Json也称Json.net)用于处理JSON。
【更新】在 .net core 中对 json 有原生支持,参见命名控件 System.Text.Json(System.Text.Json.dll)

一般是两种方式来用:

1、固定结构:json与对象实例互转。序列化/反序列化,主要是用于对象的传输和存储。

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


string jsonText = "[{\"age\":\"18\",\"name\":\"王梅梅\",\"sex\":\"女\"},{\"age\":\"20\",\"name\":\"李雷\",\"sex\":\"男\"}]";
Newtonsoft.Json.JsonConvert.DeserializeObject<Person>(jsonText)

 

[
{
	"age": "18",
	"name": "王梅梅",
	"sex": "女"
},
{
	"age": "20",
	"name": "李雷",
	"sex": "男"
}
]



2、非固定结构:通过JToken实现对 json的构造、解析、查找(JPAth)、节点的增/删/改。

JToken的层次结构是这样的:


JToken          -抽象基类
  JContainer     - 能够包含其它JToken的JToken抽象基类 
    JArray     - 表示一个JSON数组(包含一个有序的List<JToken>)
    JObeject      - 表示一个JSON对象(包含一个IEnumerable<JProperty>)
    JProperty     - 表示一个JSON属性(在JObject中是一个name/JToken键值对)
  JValue       - 表示一个原生JSON值(string,number,boolean,null)

简单理解,JToken对应json中的一个节点/某一层的节点。

参考:
https://www.cnblogs.com/Lau7/p/8036872.html
https://stackoverflow.com/questions/38558844/jcontainer-jobject-jtoken-and-linq-confusion

posted @ 2019-06-04 17:18  俊哥V  阅读(213)  评论(0编辑  收藏  举报