在第一篇文章中使用的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转化时仅仅处理部分属性二?相关推荐

  1. python生成json_python中如何进行json转化

    JSON是一种轻量级的数据交换格式.采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成,并有效地提 ...

  2. python读文件缺key_在Python中读取Twitter json文件时出现KeyErrors

    我试图用我从twitter收集的数据分析一个json文件,但是当我试图搜索一个关键字时,它说找不到,但是我可以看到它在那里.我试了两种不同的方法.我会把它们贴在下面.任何建议都很好.在 尝试1:imp ...

  3. html 左键右键双击事件,html中在鼠标双击元素时触发的事件属性ondblclick

    实例Copy Text 浏览器支持 IE Firefox Chrome Safari Opera 所有主流浏览器都支持 ondblclick 属性. 定义和用法 ondblclick 属性在鼠标双击元 ...

  4. 使用@RequestBody 接收前端传到后端的json数据时,页面出现415,获取不到Cookie

    文章目录 1.使用@RequestBody 接收前端传到后端的json数据时,页面出现415 2.获取Cookie时,使用F12,查看Cookie储存时的路径,只有路径一致才可以获取Cookie 3. ...

  5. JSON转化工具的使用

    概述 JSON是一种轻量化的数据传输格式,在各种场景都有运用.比如在ajax中,服务端的数据一般通过JSON字符串的格式传输给前端,前端ajax引擎自动将JSON字符串转化为JS对象(需要将ajax的 ...

  6. JSON.toJSONString格式化成json字符串时保留null属性

    第一篇   JSON.toJSONString格式化成json字符串时保留null属性 原文:https://blog.csdn.net/qq_34412985/article/details/819 ...

  7. 【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 )

    文章目录 一.ASTTransformation#visit 方法中访问 Groovy 类.方法.字段.属性 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groo ...

  8. 为什么json转化有斜杠_json中大量反斜杠问题

    今天给测试写一个第三方平台的mock服务,在通讯调试中发现一个问题,不管是被测服务本身的日志还是我这边打印的日志,在打印报文 json 时都出现了大量的反斜杠,感觉有点诡异.然后在网上查了下,很快弄明 ...

  9. spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式

    spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式   在类名,接口头上注解使用在 @JsonIgnoreProperties(value={"comid" ...

最新文章

  1. RESTful之自动生成接口文档
  2. C++中无符号数与有符号数的转换
  3. python berkeley 操作——尤其提示 需版本匹配
  4. keil编译出错关于__use_no_semihosting_swi的使用
  5. c语言数组算n阶乘,c语言中如何计算n的阶乘
  6. 网易云信携手海信S7,新社交开拓电视领域新未来
  7. 使用RegularExpressionValidator验证(转)
  8. 【课程设计】 推箱子游戏(源码+详解)
  9. 智能运维|AIRIOT智慧光伏管理解决方案
  10. 详解Google Chrome浏览器(操作篇)(上)
  11. pytorch CNN手写字体识别
  12. linux清空文件命令
  13. 发一些收藏的收费MD5
  14. 一秒钟实现Andriod系统文件访问
  15. python夯实基础日记-for循环、优化技巧、函数
  16. kali2020.1中文字体乱码/kali乱码/汉化
  17. 【客户服务】客户流失该如何应对
  18. nginx搭建点播服务器
  19. [C语言]给出一个大于或等于3的正整数,判断他是不是一个素数。
  20. 淘客seo推广怎么做之自动加内链接系统开发

热门文章

  1. ERROR 1045 (28000): Access denied for user root@localhost (using password:
  2. poj 2151 Check the difficulty of problems
  3. 17 | 案例篇:如何利用系统缓存优化程序的运行效率?
  4. MySQL(5)日志管理、备份与恢复,断点
  5. linux awk 教程,Linux awk使用案例教程
  6. python创建新工程_个人博客二|创建项目
  7. python栈与队列的封装
  8. RMQ问题,加深对ST算法的理解(Sparse Table)
  9. 一朵云、一张网、一体化 ——GRTN 打造最佳流媒体场景实践
  10. 云原生架构应该怎么设计?