写点什么

Newtonsoft.Json 的使用整理

用户头像
happlyfox
关注
发布于: 2021 年 05 月 12 日

关于我

我的博客 | 欢迎关注

引言

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 的视频学习资源


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

发布于: 2021 年 05 月 12 日阅读数: 38
用户头像

happlyfox

关注

公众号 程序员工具集 2021.02.18 加入

分享优秀的开源项目、学习资源和常用工具。谈论新闻热点、职场经验、学习感悟。共同进步!

评论

发布
暂无评论
Newtonsoft.Json的使用整理