关于序列化成JSON是NULL值转成空字符串, 要怎么搞呢.

陈阿弟 2013-04-18 09:52:47
关于序列化成JSON是NULL值转成空字符串, 要怎么搞呢.
...全文
37221 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2015-06-30
  • 打赏
  • 举报
回复
那就在输出之前把所有类型为string的值为null的字段都重新赋值,简单一点写个通用的反射处理函数。
陈阿弟 2013-04-18
  • 打赏
  • 举报
回复
引用 16 楼 linkiforward 的回复:
那就从源头做起,把插入数据库的那些数据为null的改成"",用表里面的默认值或者是程序插入的时候,或者是触发器...
这个工程量太大了吧... 以前的代码 都要修改....
福惜 2013-04-18
  • 打赏
  • 举报
回复
那就从源头做起,把插入数据库的那些数据为null的改成"",用表里面的默认值或者是程序插入的时候,或者是触发器...
陈阿弟 2013-04-18
  • 打赏
  • 举报
回复
引用 14 楼 qldsrx 的回复:
.NET里面的null和空字符串是不同的概念,null代表了未初始化,而空字符串则是初始化过了,这两者是有严格区分的,不能因为你某个地方要用到空字符串而强制修改序列化类的处理方式,对于为null属性,反序列化是不处理该属性的,但是为空字符串则不同,必须处理。事实上序列化后应该连 {aa:null}都看不到,直接为{},内部空白
这个应该是看使用类库对Null值是怎么处理. 我现在用的那个类库Newtonsoft.Json.dll, 应该是如果字段为NULL值时, 直接就输出null字符串.
qldsrx 2013-04-18
  • 打赏
  • 举报
回复
.NET里面的null和空字符串是不同的概念,null代表了未初始化,而空字符串则是初始化过了,这两者是有严格区分的,不能因为你某个地方要用到空字符串而强制修改序列化类的处理方式,对于为null属性,反序列化是不处理该属性的,但是为空字符串则不同,必须处理。事实上序列化后应该连 {aa:null}都看不到,直接为{},内部空白
qldsrx 2013-04-18
  • 打赏
  • 举报
回复
不可能不好改,只是生成那种超简单的Model,不如自己手写一个高级的
陈阿弟 2013-04-18
  • 打赏
  • 举报
回复
我想要的是, 最好能在转换Josn的类库 里加一个 转换的类, 什么的...
陈阿弟 2013-04-18
  • 打赏
  • 举报
回复
引用 10 楼 qldsrx 的回复:
对于有默认值的属性,不要直接用简写的{get;set;} ,写完整,例如: private string _aa = ""; public string aa { get {return _aa;} set {_aa=value;} }
这个Model 都是生成的...不好改....
qldsrx 2013-04-18
  • 打赏
  • 举报
回复
对于有默认值的属性,不要直接用简写的{get;set;} ,写完整,例如: private string _aa = ""; public string aa { get {return _aa;} set {_aa=value;} }
Scorip 2013-04-18
  • 打赏
  • 举报
回复
引用 8 楼 Scorip 的回复:
引用 6 楼 asdvb 的回复:引用 3 楼 Scorip 的回复:引用 2 楼 asdvb 的回复:现在是有一些字段 没有 赋值, 序列化后,该字段会变成NULL, 例: public string aa{get;set;} 序列化后会变成: {aa:null} 我要的结果是{aa:""} 这样前端显示就正常了, 返回之前替换一下?? Replac……
这样总不会出现误伤吧????
Scorip 2013-04-18
  • 打赏
  • 举报
回复
引用 6 楼 asdvb 的回复:
引用 3 楼 Scorip 的回复:引用 2 楼 asdvb 的回复:现在是有一些字段 没有 赋值, 序列化后,该字段会变成NULL, 例: public string aa{get;set;} 序列化后会变成: {aa:null} 我要的结果是{aa:""} 这样前端显示就正常了, 返回之前替换一下?? Replace("null","''"); ……
在后台循环获取的时候加个判断? 还是 replace 好,,,怕把好的 string 也替换了,那就 Replace(":null}",":''}"); 这样?
陈阿弟 2013-04-18
  • 打赏
  • 举报
回复
现在服务端用 Newtonsoft.Json.dll
陈阿弟 2013-04-18
  • 打赏
  • 举报
回复
引用 3 楼 Scorip 的回复:
引用 2 楼 asdvb 的回复:现在是有一些字段 没有 赋值, 序列化后,该字段会变成NULL, 例: public string aa{get;set;} 序列化后会变成: {aa:null} 我要的结果是{aa:""} 这样前端显示就正常了, 返回之前替换一下?? Replace("null","''");
这样不好吧, 如果返回的正常字符里包含有null的字符, 那....
陈阿弟 2013-04-18
  • 打赏
  • 举报
回复
能不能 在客户端不要判断, 在服务端直接处理好呢?
linrachel 2013-04-18
  • 打赏
  • 举报
回复
显示的时候判断一下不行?
Scorip 2013-04-18
  • 打赏
  • 举报
回复
引用 2 楼 asdvb 的回复:
现在是有一些字段 没有 赋值, 序列化后,该字段会变成NULL, 例: public string aa{get;set;} 序列化后会变成: {aa:null} 我要的结果是{aa:""} 这样前端显示就正常了,
返回之前替换一下?? Replace("null","''");
陈阿弟 2013-04-18
  • 打赏
  • 举报
回复
现在是有一些字段 没有 赋值, 序列化后,该字段会变成NULL, 例: public string aa{get;set;} 序列化后会变成: {aa:null} 我要的结果是{aa:""} 这样前端显示就正常了,
种草德鲁伊 2013-04-18
  • 打赏
  • 举报
回复
两个是不一样的东西,为什么要乱搞...

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧