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

解决方案 »

  1.   

    现在是有一些字段 没有 赋值, 序列化后,该字段会变成NULL,
    例: public string aa{get;set;} 
    序列化后会变成: {aa:null}我要的结果是{aa:""} 这样前端显示就正常了,
      

  2.   


    返回之前替换一下??
    Replace("null","''");
      

  3.   


    这样不好吧, 如果返回的正常字符里包含有null的字符, 那....
      

  4.   

    现在服务端用 Newtonsoft.Json.dll
      

  5.   

    在后台循环获取的时候加个判断?
    还是 replace 好,,,怕把好的 string 也替换了,那就 Replace(":null}",":''}"); 这样?
      

  6.   

    对于有默认值的属性,不要直接用简写的{get;set;} ,写完整,例如:
    private string _aa = "";
    public string aa
    {
        get {return _aa;}
        set {_aa=value;}
      

  7.   


    这个Model 都是生成的...不好改....
      

  8.   

    我想要的是, 最好能在转换Josn的类库 里加一个 转换的类, 什么的...
      

  9.   

    不可能不好改,只是生成那种超简单的Model,不如自己手写一个高级的
      

  10.   

    .NET里面的null和空字符串是不同的概念,null代表了未初始化,而空字符串则是初始化过了,这两者是有严格区分的,不能因为你某个地方要用到空字符串而强制修改序列化类的处理方式,对于为null属性,反序列化是不处理该属性的,但是为空字符串则不同,必须处理。事实上序列化后应该连 {aa:null}都看不到,直接为{},内部空白
      

  11.   


    这个应该是看使用类库对Null值是怎么处理. 我现在用的那个类库Newtonsoft.Json.dll, 应该是如果字段为NULL值时, 直接就输出null字符串.
      

  12.   

    那就从源头做起,把插入数据库的那些数据为null的改成"",用表里面的默认值或者是程序插入的时候,或者是触发器...