V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gongweixin
V2EX  ›  问与答

你支持哪种 Json 协议规格?

  •  
  •   gongweixin · 2014-11-21 18:25:00 +08:00 · 3103 次点击
    这是一个创建于 3656 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用Json作为通讯协议的时候,对空值(null)的返回大家是哪种
    1.null
    2.字符串"",Map{},数组[]
    3.直接缺省这个字段不返回.


    最好能给出理由,Thanks
    第 1 条附言  ·  2014-11-21 21:47:31 +08:00
    知道Json标准是返回null, 但是在实际开发中像@yellowV2ex 说的那样,字符串返回""会比返回null更友好,并且我没有想到什么情况下字符串返回null会比返回""更友好.

    所以又多个疑问,什么情况下String返回null比返回空串"" 更友好.

    @oott123 @yellowV2ex @subpo
    9 条回复    2014-11-24 21:58:03 +08:00
    subpo
        1
    subpo  
       2014-11-21 18:28:17 +08:00
    {xxx:null} 直接缺省前端需要额外的代码来处理
    gongweixin
        2
    gongweixin  
    OP
       2014-11-21 18:49:59 +08:00
    @subpo 感谢, 你是站在web前端角度看的吧,那如果是站在客户端(android,ios)和服务端角度看呢?
    oott123
        3
    oott123  
       2014-11-21 18:52:59 +08:00 via Android
    标准的就是 null 啊…

    如果是对流量极其敏感的场景,可以考虑去掉。除此之外似乎都没有去掉的理由?
    gongweixin
        4
    gongweixin  
    OP
       2014-11-21 18:57:47 +08:00
    @oott123 那null 和 第二种风格的对比呢?
    yellowV2ex
        5
    yellowV2ex  
       2014-11-21 19:12:00 +08:00
    字符串""
    因为直接 XXX.text = json.xxx 的时候不会显示 (null),尤其是什么个人资料的时候。
    如果是null,要加好几条if
    oott123
        6
    oott123  
       2014-11-21 19:26:55 +08:00 via Android   ❤️ 1
    @gongweixin 如果这应该是个数组,没有元素在里面,那就用 []
    {} 我个人很少用
    空字符串和 null 的逻辑意义不同啊。前者是有,但是为空;后者是没有~
    gongweixin
        7
    gongweixin  
    OP
       2014-11-21 20:35:18 +08:00
    @oott123 我也知道空字符串和 null 的逻辑意义不同,但是在实际的开发中,哪种情况下返回null会优于返回""呢?
    scys
        8
    scys  
       2014-11-21 21:40:48 +08:00 via Android
    协商好了就行,以前我返回null前端说会崩,现在我检测到空值,就直接删除那个键了
    justjavac
        9
    justjavac  
       2014-11-24 21:58:03 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:49 · PVG 06:49 · LAX 14:49 · JFK 17:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.