Newtonsoft.Json的使用整理

关于我

我的博客 | 欢迎关注

引言

json是我们在工作中经常用到的一种数据传输格式,开始过程中解析json是我们经常面对的问题。NewtonsoftJson是c#的一套json处理封装类,它可以高效,方便地帮助我们处理json。

NetonSoftJson提供了完整的使用文档,文档地址如下:Json.NET Documentation

NetonSoftJson的不同使用场景

常用方法 序列化和反序列化

这应该是我们最常用的俩个方法了

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

高级特性

参考文章 Newtonsoft.Json高级用法

某些字段不想被反序列化

使用JsonIgnore特性标签

1public class Person 2{ 3 public int Age { get; set; } 4 5 public string Name { get; set; } 6 7 [JsonIgnore] 8 public string Sex { get; set; } 9}

自定义序列化名称

1public class Person 2{ 3 public int Age { get; set; } 4 5 public string Name { get; set; } 6 7 [JsonProperty(PropertyName = "SepcialSex")] 8 public string Sex { get; set; } 9}

解析字面量字符串

首先构建一个json对象,描述了一个老师的实体,里面包含老师的基本属性(名称、年龄),所管理的班级属性,所管理的班级的学生数组

1{ 2 "name": "张三", 3 "age": "10", 4 "classroom": { 5 "name": "1年级1班", 6 "desc": "描述" 7 }, 8 "students": [ 9 { 10 "age": "小名" 11 }, 12 { 13 "age": "小红" 14 } 15 ] 16}

接下来我们使用Newtonsoftjson解析字符串并获取到我们需要的信息

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

获取姓名

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

获取班级信息

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

获取学生信息

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

判断key是否存在

1//key 不存在 2if (jObject.Property("abc") != null) 3{ 4 Console.WriteLine(jObject.Property("abc").Value.ToString()); 5} 6else 7{ 8 Console.WriteLine("当前key不存在"); 9}

WebApi下的应用

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

.NET Core 处理 WebAPI JSON 返回烦人的null为空

总结

Json的使用远不止于此,作者只是针对自己到现在为止工作中常见的问题进行一个整理,后续也会慢慢补充新的内容,将文章不断地更新优化。

The END

本文到此结束,希望对你有帮助 😃

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

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

福利姬

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

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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

C# JToken类的使用,实现解析动态json数据、遍历、查找

在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用。为了解决动态解析json数据,微软有个Newtonsoft.Json封装类十分好用,里面的JToken直接实现ling查询。将json字符串解析为JToken,

Fastjson API Stream使用说明

FastjsonAPIStreamFastjson当需要处理超大JSON文本时,需要StreamAPI,在fastjson1.1.32版本中开始提供StreamAPI。如何序列化超大JSON数组序列化如果你的JSON格式是一个巨大的JSON数组,有很多元素,

AspNetCore Json序列化设置

AspNetCore中的Json序列化处理已经默认使用_Newtonsoft.Json_库了...比如像MVC中:publicI不过使用过程中会发现一些问题,其实这算默认设置吧:Json序列化后的字段格式会变成小驼峰形式Json序列化时的日期时间格式化没有处理循环引用的问题,比如EntityF