.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值