首页新闻找找看学习计划

webapi 返回值json序列化字符串空对象默认为null,想改成默认为空字符串

0
悬赏园豆:20 [已解决问题] 解决于 2016-08-07 19:37

webapi 返回值json序列化字符串空对象默认为null,想改成默认为空字符串

吴瑞祥的主页 吴瑞祥 | 高人七级 | 园豆:28731
提问于:2016-08-04 16:20
< >
分享
最佳答案
0

有什么区别么?对于调用的人来说。。。

收获园豆:7
顾晓北 | 大侠五级 |园豆:9520 | 2016-08-04 16:27

调用方需求...

吴瑞祥 | 园豆:28731 (高人七级) | 2016-08-04 16:36

@吴瑞祥: filter做不到吗???

顾晓北 | 园豆:9520 (大侠五级) | 2016-08-04 16:38

@顾晓北: 我的问题就是怎么做...

吴瑞祥 | 园豆:28731 (高人七级) | 2016-08-04 16:39

@吴瑞祥: 。。。没这么做过,哈哈。。。拦截请求就是用filter,不过webapi,依照园子的接口的样子,貌似是可以提供XML和json格式,所以返回的也不一定是json,你还是自己试试吧,哈哈

顾晓北 | 园豆:9520 (大侠五级) | 2016-08-04 16:41

@吴瑞祥: 我觉得是不是调用方来处理这件事情比较容易???

顾晓北 | 园豆:9520 (大侠五级) | 2016-08-04 17:00
其他回答(2)
0

你的json应试对应一个model吧,把这个model的所有string类型的值初始化的时候置为"",然后有值的给值 ,没值的还保持"",就可以了。其实你这个需求本应该不存在的,""和null本身是两个东西,你那边明明是null,即又给人家"",这个本身就不是系统层面的问题,而是业务层面的。

收获园豆:7
ensleep | 园豆:1391 (小虾三级) | 2016-08-04 17:40

是啊.调用方有这需求你有什么法子.返回值实体太多.想找一个aop的法子.

支持(0) 反对(0) 吴瑞祥 | 园豆:28731 (高人七级) | 2016-08-04 17:45

@吴瑞祥: 少年,你这样会出事的~相当于你给出的数据并不是真正的数据,你确定?

支持(0) 反对(0) ensleep | 园豆:1391 (小虾三级) | 2016-08-04 17:57

@ensleep: 去扣mvc的代码了

支持(0) 反对(0) 吴瑞祥 | 园豆:28731 (高人七级) | 2016-08-04 18:01

@吴瑞祥: 额……WEBAPI2用的是newtonsoft序列化的,你在global文件里面可以对它进行设置 ,你继承JsonConverter实现一个新的Converter,重写里面的void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)方法,value就是对象,你反射出来它的所有字符串类型的属性,然后判断是否为null,如果是,则改为""。然后把这个新的Converter在global里面通过设置配给newtonsoft。

涉及东西太多了,不过,根据关键字,网上你都能找到方法的,我不在公司,没有环境帮你写——

支持(0) 反对(0) ensleep | 园豆:1391 (小虾三级) | 2016-08-04 18:07

@ensleep: 回复错了.不好意思.

json.net的配置我试过了.重写Converter也试过了了..他把null单独处理了.不会进新建的Converter...可坑爹了.

支持(0) 反对(0) 吴瑞祥 | 园豆:28731 (高人七级) | 2016-08-04 18:12

@吴瑞祥: 假如那种方式你试过了有问题,我没有办法帮你调,你可以试一下实现一个IHttpModule,通过Response的Context-Type来判断是不是Json,如果是,则进行一些操作,这个就很麻烦了,因为这时候已经是字符串了,难道你要把它读出来反序列化成类,修改完成后,再序列化回去?这个当数据很大的时候,一次请求估计要花近双倍的时间。另一种方式则是直接用正则对字符串进行替换,不过,误伤的话就蛋疼了。

支持(0) 反对(0) ensleep | 园豆:1391 (小虾三级) | 2016-08-04 18:22
0

还是aop吧,如果需要,我可以尝试写下

收获园豆:6
jello chen | 园豆:7091 (大侠五级) | 2016-08-04 21:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册