C# 序列化Json时如何忽略JsonProperty(PropertyName =“ someName”)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# 序列化Json时如何忽略JsonProperty(PropertyName =“ someName”),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2817字,纯文字阅读大概需要5分钟。
内容图文
![C# 序列化Json时如何忽略JsonProperty(PropertyName =“ someName”)](/upload/InfoBanner/zyjiaocheng/629/32cbe0dbe13740aa8c88154420d985e8.jpg)
前言
序列化大家都很常见,就是把一个对象序列化成一串Json 字符串。最近对接第三方的时候遇到了一个情况,我们C#都是用骆驼命名,而他们呢需要接收的Json字符串的 key 是 小写 的这时候要怎么处理呢!话不多说直接上代码开干
定义一个 Map 类
using Newtonsoft.Json; using System; namespace JsonLower { public class Map { [JsonProperty("id")] public Guid ID { get; set; } [JsonProperty("code")] public string Code { get; set; } [JsonProperty("name")] public string Name { get; set; } } }
主程序初始化数据转Json字符串
using Newtonsoft.Json; using System; using System.Collections.Generic; namespace JsonLower { class Program { static void Main(string[] args) { List<Map> maps = new List<Map>() { new Map{ ID = Guid.NewGuid(), Code = "MD0001", Name = "小明" }, new Map{ ID = Guid.NewGuid(), Code = "MD0002", Name = "小红" }, new Map{ ID = Guid.NewGuid(), Code = "MD0003", Name = "张三" }, }; var jsonStr = JsonConvert.SerializeObject(maps); Console.WriteLine(jsonStr); Console.ReadLine(); } } }
看下效果
在属性上使用了 JsonProperty 特性,使得序列化时根据 JsonProperty 特性传入的字符串进行序列化,那我们有时候想忽略掉 JsonProperty 特性
using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace JsonLower { /// <summary> /// Json 序列化 /// </summary> public class JsonHelper { /// <summary> /// 序列化是否按照JsonProperty显示Key /// </summary> /// <param name="obj"></param> /// <param name="isJsonProperty"></param> /// <returns></returns> public static string SerializeObject(object obj, bool isJsonProperty = false) { var jsonSettings = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore }; if (isJsonProperty) jsonSettings.ContractResolver = new LongNameContractResolver(); return JsonConvert.SerializeObject(obj, jsonSettings); } } public class LongNameContractResolver : DefaultContractResolver { protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization) { IList<JsonProperty> list = base.CreateProperties(type, memberSerialization); foreach (JsonProperty prop in list) { prop.PropertyName = prop.UnderlyingName; } return list; } } }
修改主程序代码
using Newtonsoft.Json; using System; using System.Collections.Generic; namespace JsonLower { class Program { static void Main(string[] args) { List<Map> maps = new List<Map>() { new Map{ ID = Guid.NewGuid(), Code = "MD0001", Name = "小明" }, new Map{ ID = Guid.NewGuid(), Code = "MD0002", Name = "小红" }, new Map{ ID = Guid.NewGuid(), Code = "MD0003", Name = "张三" }, }; //未忽略 { var jsonStr = JsonConvert.SerializeObject(maps); Console.WriteLine("未忽略JsonProperty:" + jsonStr); } { var jsonStr = JsonHelper.SerializeObject(maps,true); Console.WriteLine("忽略JsonProperty:" + jsonStr); } Console.ReadLine(); } } }
看一下效果图
大功告成!
参考文章:https://www.it1352.com/1504360.html
内容总结
以上是互联网集市为您收集整理的C# 序列化Json时如何忽略JsonProperty(PropertyName =“ someName”)全部内容,希望文章能够帮你解决C# 序列化Json时如何忽略JsonProperty(PropertyName =“ someName”)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。