如何处理以布尔值响应的JSON服务?

Jus*_*ijn 12 rest json

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

[true]
Run Code Online (Sandbox Code Playgroud)

要么:

{ "response": true }
Run Code Online (Sandbox Code Playgroud)

我更喜欢后者.这有什么最好的做法吗?

fdr*_*ger 10

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

  • @JustusRomijn:嗯,我理解你的立场.不过,你提到的RFC并不是标准.标准在这里:http://www.ecma-international.org/publications/standards/Ecma-404.htm(非常新鲜)和AFAIU它声明JSON文本可以是任何JSON值,而不仅仅是数组或对象.我不认为这有什么不同,但我会说jsonlint根本不符合标准(它是"备忘录兼容"). (4认同)
  • @JustusRomijn:"JSON值"(这正是我在回答中使用的术语)与您的引用提及的"JSON文本"不同.当规范提到JSON时,它们意味着"JSON值",而不是RFC中定义的"JSON文本"(JSON.parse,JSON.stringify,JSON序列化库等通常产生并解析任何JSON值的字符串). (2认同)