【问题标题】:How to handle a JSON service that responds with a boolean value?如何处理以布尔值响应的 JSON 服务?
【发布时间】:2013-11-21 15:52:19
【问题描述】:

我希望我的 JSON 服务返回一个布尔值。我知道只返回truefalse 是无效的JSON,那么最好的方法是什么?我想到了这些选项:

[true]

或者:

{ "response": true }

我更喜欢后者。有没有这方面的最佳实践?

【问题讨论】:

    标签: json rest


    【解决方案1】:

    true 是一个完全有效的 JSON 值,它并不比 [true]{ "response": true } 差。将它包装到一个对象中将是一个好主意(并且对象比数组更好),因为如果有一天您决定向响应中添加更多数据,您将不会破坏所有期望纯布尔值的客户端。

    【讨论】:

    • 其实true是无效的JSON。见tools.ietf.org/html/rfc4627,上面写着A JSON text is a serialized object or array.
    • @JustusRomijn:“JSON 值”(这正是我在回答中使用的术语)与您引用的“JSON 文本”不同。当规范提到 JSON 时,它们的意思是“JSON 值”,而不是 RFC 中定义的“JSON 文本”(JSON.parse、JSON.stringify、JSON 序列化库等通常会生成和解析任何 JSON 值的字符串)。
    • 是的,抱歉,您说的是正确的value,但它不是有效的 JSON,因为您只传递了值 true。也可以在jsonlint.com进行测试
    • @JustusRomijn:嗯,我理解你的立场。不过,您提到的 RFC 不是标准。标准在这里:ecma-international.org/publications/standards/Ecma-404.htm(相当新鲜)和 AFAIU 它指出 JSON 文本可以是任何 JSON 值,而不仅仅是数组或对象。我不认为这有什么区别,但我会说 jsonlint 根本不符合标准(它是“符合备忘录”)。
    • jsonlint.com 现在将 true 视为有效的 json。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多