NewtonsoftJson的使用整理
关于我
引言
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的视频学习资源
公众号后台回复:“技能图谱”,送你一份最全的开发者技能图谱

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache ECharts 5.1 发布,新增支持地理坐标系和地图系列的 SVG 底图
在最近发布的 Apache ECharts 5.1 版本中,新增支持了地理坐标系和地图系列的SVG 底图,可以用来灵活地创造出非常酷的可视化作品;图例组件全面更新,默认更接近数据的样式,让数据与图例之间产生更符合直观的关联。 除此之外,我们还在这个版本中改进了非常多的功能,让我们一起来了解一下吧! 地理坐标系和地图系列的 SVG 底图 在此之前,Apache ECharts 的只支持 geoJSON 格式的地图。在本次发布的 v5.1 版本中,地理坐标系组件(geo)和地图系列(map series)的底图支持了 SVG 格式,并且在 Canvas 和 SVG 两种渲染模式中得到渲染表现一致的效果。 除此之外,SVG 底图也和 geoJSON 一样,默认支持了平移、缩放等操作,提供相似的用户体验。 SVG 地图支持了对指定区域“高亮(emphasis)”、“聚焦(focus)”、“淡出(blur)”、“显示标签(label)”、“提示框(tooltip)”等能力,通过 ECharts 配置项就可以方便地启用。他们能够让用户清晰地看到数据、信息和图像的关联。 有了 SVG 底图后,开发者...
- 下一篇
openGauss 社区成立 Security Technology SIG
2021年4月30日,openGauss社区技术委员会决议通过openGauss社区成立Security Technology SIG的申请,openGauss社区正式成立 Security Technology SIG。 SecurityTechnology SIG 致力于openGauss社区数据库安全技术的能力的开发和维护,包括保护数据库系统以防止恶意用户窃取、篡改和破坏数据库中数据信息的技术。 数据库安全技术(Database Security Technology)是指保护数据库系统以防止恶意用户窃取、篡改和破坏数据库中数据信息的技术。随着业务环境逐步云化、复杂化,攻击技术的不断演进发展,数据库系统所面临的威胁越来越多,攻击成本也越来越低,被攻击后所产生的影响也越来越大。国家“十四五”规划纲要强调要全面加强网络安全保障体系和能力建设,加强个人信息保护并推进数字产业安全。数据库系统作为参与到千行百业生产活动中的数据载体,需要持续投入资源加强安全能力建设以应对繁杂的安全风险。 openGauss作为企业级开源数据库,已经构建了相对完善的安全防御体系,围绕未来的业务挑战和风险,op...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作