对于我

我的博客 | 欢送关注

引言

json是咱们在工作中常常用到的一种数据传输格局,开始过程中解析json是咱们常常面对的问题。NewtonsoftJson是c#的一套json解决封装类,它能够高效,不便地帮忙咱们解决json。

NetonSoftJson提供了残缺的应用文档,文档地址如下:Json.NET Documentation

NetonSoftJson的不同应用场景

罕用办法 序列化和反序列化

这应该是咱们最罕用的俩个办法了

JsonConvert.DeserializeObject<T>(string json)//反序列化JsonConvert.SerializeObject(object obj) //序列化

高级个性

参考文章 Newtonsoft.Json高级用法

某些字段不想被反序列化

应用JsonIgnore个性标签

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

自定义序列化名称

public class Person{    public int Age { get; set; }    public string Name { get; set; }    [JsonProperty(PropertyName = "SepcialSex")]    public string Sex { get; set; }}

解析字面量字符串

首先构建一个json对象,形容了一个老师的实体,外面蕴含老师的根本属性(名称、年龄),所治理的班级属性,所治理的班级的学生数组

{  "name": "张三",  "age": "10",  "classroom": {    "name": "1年级1班",    "desc": "形容"  },  "students": [    {      "age": "小名"    },    {      "age": "小红"    }  ]}

接下来咱们应用Newtonsoftjson解析字符串并获取到咱们须要的信息

string jsonStr = "{\"name\":\"张三\",\"age\":\"10\",\"classroom\":{\"name\":\"1年级1班\",\"desc\":\"形容\"},\"students\":[{\"name\":\"小名\"},{\"name\":\"小红\"}]}";JObject jObject = JObject.Parse(jsonStr);

获取姓名

Console.WriteLine("name is " + jObject["name"].ToString());Console.WriteLine("age is " + jObject.GetValue("age").ToString());

获取班级信息

Console.WriteLine("classroom name is " + jObject["classroom"]["name"]);

获取学生信息

JArray jArray = JArray.Parse(jObject["students"].ToString());foreach (var arr in jArray){    JObject jObj = JObject.Parse(arr.ToString());    string name = jObj["name"].ToString();    Console.WriteLine("student name  is " + name);}

判断key是否存在

//key 不存在if (jObject.Property("abc") != null){    Console.WriteLine(jObject.Property("abc").Value.ToString());}else{    Console.WriteLine("以后key不存在");}

WebApi下的利用

我的项目开发中不论是前台还是后盾都会遇到烦人的null,数据库表中字段容许空值,则代码实体类中对应的字段类型为可空类型Nullable<>,如int?,DateTime?,null值字段序列化返回的值都为null,前台对应字段赋值须要做null值判断,怎么能力全局把null替换为空。

.NET Core 解决 WebAPI JSON 返回烦人的null为空

总结

Json的应用远不止于此,作者只是针对本人到当初为止工作中常见的问题进行一个整顿,后续也会缓缓补充新的内容,将文章一直地更新优化。

The END

本文到此结束,心愿对你有帮忙

更多精彩 技术文章汇总在我的 公众号程序员工具集 ,继续更新,欢送关注订阅珍藏。

如果还有什么疑难或者倡议,能够多多交换,原创文章,文笔无限,满腹经纶,文中若有不正之处,万望告知。

福利姬

公众号后盾回复:“关注礼包”,获取价值5K的视频学习资源

公众号后盾回复:“技能图谱”,送你一份最全的开发者技能图谱