http响应返回不一致的json

时间:2015-12-30 04:26:38

标签: json api rest

我正在使用一个返回字段的端点,这些字段有时返回一个json对象,有时候是一个空数组。例如,

回应1:

{
   "status": true,
   "people": {
      "id":"123",
      "name":"john"
   }        
}

回应2:

{
   "status": true,
   "people": []
}

请注意"人员"当没有任何东西时被设置为空[],而当存在某个东西时被设置为单个对象。

我已经看到这种情况在随机的地方出现了几次,对我来说似乎有点骑士,因为不一致使得价值看起来模棱两可。我想知道是否有人知道这是否被认为是不好的做法,以及为什么。你会认为这是他们的错误吗?有人可以帮忙解释一下吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

取决于,如果有一个人的结果,那么会有一些堆栈会返回一个{}对象,如果有多个人,则会有一些人[人,人]。我个人更喜欢包含一个实体的数组。

如果你说人们永远不会超过一个(这个名字暗示很多),那么我肯定地说,当没有结果时,api在返回数组时是不一致的,否则就是对象文字。

如果没有,应该怎么办?这是一个约定问题,一个空数组并不比其他任何东西都陌生,尽管它可能是一个null或其他东西。

同样,这是一个惯例问题。如果您在构建您正在呼叫的api时有一些发言权,则可以表达偏好。否则你只需要适应回来的东西。

答案 1 :(得分:1)

某些客户端技术希望将此JSON反序列化为某个类的对象。尝试容纳您发布的两个JSON片段对于某些客户来说将是困难的(至少在静态类型语言中)。 RESTful Web服务实现不应该假设客户端将使用特定堆栈甚至与服务使用相同的语言。出于这个原因,如果我正在设计此端点,我会尽量避免返回这种不一致的结果。

当然,正如另一个答案所指出的那样,这是一个惯例问题,并且会奏效。我认为,对于一些试图使用您服务的客户来说,这会让事情变得不必要地复杂化。

相关问题