.net中怎样实现json转化时仅仅处理部分属性二?
在第一篇文章中使用的json方法。能够依照须要仅仅处理须要的属性,但却要求属性不能是复杂的类型,比如泛型,数组。其它用户自己定义的类等,限制太多,于是自己看看能不能改进,想不到Newtonsoft.Json提供有相关的接口,仅仅须要实现就能够了。
仅仅须要继承DefaultContractResolver,并改写一个方法就能够了。
核心代码:
/// <summary>/// 对象转为json,全部属性都输出/// </summary>/// <typeparam name="ObjType"></typeparam>/// <param name="obj"></param>/// <returns></returns>public static string ObjToJsonString<ObjType>(ObjType obj) where ObjType : class{string s = JsonConvert.SerializeObject(obj);return s;}/// <summary>/// 对象转为json,仅仅输出部分属性/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="t">对象类型值</param>/// <param name="propertyInfos">须要json处理的属性名称。以逗号分隔</param>/// <returns></returns>public static string ObjToJsonString<T>(T t, string propertyInfos) where T : class{string[] cols = propertyInfos.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);List<string> _propertyNames = new List<string>();foreach (string col in cols){ string colTemp = col.ToLower().Trim();if (!_propertyNames.Contains(colTemp)){_propertyNames.Add(colTemp);}}string s = JsonConvert.SerializeObject(t, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new DynamicContractResolver(_propertyNames) });return s;}/// <summary>/// json转为对象/// </summary>/// <typeparam name="ObjType"></typeparam>/// <param name="JsonString"></param>/// <returns></returns>public static ObjType JsonStringToObj<ObjType>(string JsonString) where ObjType : class{ ObjType s = JsonConvert.DeserializeObject<ObjType>(JsonString);return s;}class DynamicContractResolver : DefaultContractResolver{private readonly List<string> _propertyNames;public DynamicContractResolver(List<string> propertyNames){_propertyNames = propertyNames;}/// <summary>/// 假设属性是对象。须要把这个对象的属性也传给propertyNames,/// 否则处理这个对象属性时,就不包括相应的属性值/// </summary>/// <param name="type"></param>/// <param name="memberSerialization"></param>/// <returns></returns>protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization){IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);IList<JsonProperty> propertiesReturn = new List<JsonProperty>();//须要json处理的属性foreach (JsonProperty item in properties){ string PropertyNameTemp = item.PropertyName.ToLower().Trim();if (_propertyNames.Contains(PropertyNameTemp)){propertiesReturn.Add(item); }}return propertiesReturn;}}
转载于:https://www.cnblogs.com/jzdwajue/p/7248773.html
.net中怎样实现json转化时仅仅处理部分属性二?相关推荐
- python生成json_python中如何进行json转化
JSON是一种轻量级的数据交换格式.采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成,并有效地提 ...
- python读文件缺key_在Python中读取Twitter json文件时出现KeyErrors
我试图用我从twitter收集的数据分析一个json文件,但是当我试图搜索一个关键字时,它说找不到,但是我可以看到它在那里.我试了两种不同的方法.我会把它们贴在下面.任何建议都很好.在 尝试1:imp ...
- html 左键右键双击事件,html中在鼠标双击元素时触发的事件属性ondblclick
实例Copy Text 浏览器支持 IE Firefox Chrome Safari Opera 所有主流浏览器都支持 ondblclick 属性. 定义和用法 ondblclick 属性在鼠标双击元 ...
- 使用@RequestBody 接收前端传到后端的json数据时,页面出现415,获取不到Cookie
文章目录 1.使用@RequestBody 接收前端传到后端的json数据时,页面出现415 2.获取Cookie时,使用F12,查看Cookie储存时的路径,只有路径一致才可以获取Cookie 3. ...
- JSON转化工具的使用
概述 JSON是一种轻量化的数据传输格式,在各种场景都有运用.比如在ajax中,服务端的数据一般通过JSON字符串的格式传输给前端,前端ajax引擎自动将JSON字符串转化为JS对象(需要将ajax的 ...
- JSON.toJSONString格式化成json字符串时保留null属性
第一篇 JSON.toJSONString格式化成json字符串时保留null属性 原文:https://blog.csdn.net/qq_34412985/article/details/819 ...
- 【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 )
文章目录 一.ASTTransformation#visit 方法中访问 Groovy 类.方法.字段.属性 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groo ...
- 为什么json转化有斜杠_json中大量反斜杠问题
今天给测试写一个第三方平台的mock服务,在通讯调试中发现一个问题,不管是被测服务本身的日志还是我这边打印的日志,在打印报文 json 时都出现了大量的反斜杠,感觉有点诡异.然后在网上查了下,很快弄明 ...
- spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式
spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式 在类名,接口头上注解使用在 @JsonIgnoreProperties(value={"comid" ...
最新文章
- RESTful之自动生成接口文档
- C++中无符号数与有符号数的转换
- python berkeley 操作——尤其提示 需版本匹配
- keil编译出错关于__use_no_semihosting_swi的使用
- c语言数组算n阶乘,c语言中如何计算n的阶乘
- 网易云信携手海信S7,新社交开拓电视领域新未来
- 使用RegularExpressionValidator验证(转)
- 【课程设计】 推箱子游戏(源码+详解)
- 智能运维|AIRIOT智慧光伏管理解决方案
- 详解Google Chrome浏览器(操作篇)(上)
- pytorch CNN手写字体识别
- linux清空文件命令
- 发一些收藏的收费MD5
- 一秒钟实现Andriod系统文件访问
- python夯实基础日记-for循环、优化技巧、函数
- kali2020.1中文字体乱码/kali乱码/汉化
- 【客户服务】客户流失该如何应对
- nginx搭建点播服务器
- [C语言]给出一个大于或等于3的正整数,判断他是不是一个素数。
- 淘客seo推广怎么做之自动加内链接系统开发
热门文章
- ERROR 1045 (28000): Access denied for user root@localhost (using password:
- poj 2151 Check the difficulty of problems
- 17 | 案例篇:如何利用系统缓存优化程序的运行效率?
- MySQL(5)日志管理、备份与恢复,断点
- linux awk 教程,Linux awk使用案例教程
- python创建新工程_个人博客二|创建项目
- python栈与队列的封装
- RMQ问题,加深对ST算法的理解(Sparse Table)
- 一朵云、一张网、一体化 ——GRTN 打造最佳流媒体场景实践
- 云原生架构应该怎么设计?