共计 1967 个字符,预计需要花费 5 分钟才能阅读完成。
对于我
我的博客 | 欢送关注
引言
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 的视频学习资源
公众号后盾回复:“技能图谱”,送你一份最全的开发者技能图谱