MVC5序列化Json时遇到的大小写问题及解决方法
2016-02-26 15:25
579 查看
最近在一个MVC5项目中遇到了一个问题:C#编码规范中规定属性的首字母是大写的(大多数公司采用这种编码风格),但是从其它系统中接收到的json对象的属性却是小写的(大多数公司采用这种编码风格),怎样才能方便地完成转换?
最笨的方法是定义一个所有属性名为小写的ViewModel类,然后再编写相应的方法来完成大小写属性的转换。
有没有更加优雅的做法?
在MVC5,默认的json序列化组件是Newtonsoft.Json。怎样才能让Newtonsoft.Json在序列化的时候自动将大写转换成小写,而在反序列化的时候自动转换成大写?查找文档之后,发现使用JsonPropertyAtrribute即可。要使用JsonPropertyAtrribute,需要先引用命名空间Newtonsoft.Json。如下所示:
在代码中,我们使用[JsonProperty("productId ")]来修饰ProductId属性,productId为小写,ProductId为大写。在序列化和反序列的时候,Newtonsoft.Json会自动进行转换。
最笨的方法是定义一个所有属性名为小写的ViewModel类,然后再编写相应的方法来完成大小写属性的转换。
有没有更加优雅的做法?
在MVC5,默认的json序列化组件是Newtonsoft.Json。怎样才能让Newtonsoft.Json在序列化的时候自动将大写转换成小写,而在反序列化的时候自动转换成大写?查找文档之后,发现使用JsonPropertyAtrribute即可。要使用JsonPropertyAtrribute,需要先引用命名空间Newtonsoft.Json。如下所示:
1 using Newtonsoft.Json; 2 3 /// <summary> 4 ///商品类。 5 /// </summary> 6 public class Product 7 { 8 /// <summary> 9 /// 商品Id 10 /// </summary> 11 [JsonProperty("productId")] 12 public string ProductId { set; get; } 13 14 15 /// <summary> 16 /// 商品名称 17 /// </summary> 18 [JsonProperty("productName")] 19 public string ProductName { set; get; } 20 }
在代码中,我们使用[JsonProperty("productId ")]来修饰ProductId属性,productId为小写,ProductId为大写。在序列化和反序列的时候,Newtonsoft.Json会自动进行转换。
相关文章推荐
- ExtJS4中initComponent和constructor的区别
- 探究问题:ssh+extjs 权限角色用户功能的实现
- JS时间格式化
- javascript 立即执行函数的写法
- JavaScript的事件代理
- javascript 快速排序算法
- html + css + javascript 制作时间轴
- JS正则表达式重点总结
- 爬虫:selenium + phantomjs 解决js抓取问题(一)
- js系列-4 继承
- js系列-3 js作用域与闭包
- js系列-2 js函数相关
- 一款在线测试网页性能速度的工具,web开发必备
- Javascript基础恶补
- Extjs 文本框设置焦点 待整理
- js系列-1 js对象相关
- js中匿名函数的N种写法
- Javascript和CSS浏览器兼容性方面经验总结
- 原生javascript实现匀速运动动画效果
- jsp,图片显示