Json对象中的字段是否应始终具有相同的类型?

时间:2016-01-26 08:48:12

标签: json

我对Json感到困惑。我的问题是:" Json标准是否强制一个字段总是以相同的方式表示?"。例如,从我从Android应用程序访问的API,我得到

"user" : {
  ...
    "avatar": {
      "url": null,
      "normal": {
        "url": null
      },
      "mobile": {
        "url": null
      },
      "retina": {
        "url": null
      }
    },
  ...
}

一次,

"user" : {
  ...
    "avatar": "https://......0914.jpg",
  ...
}

另一次。 GSON或Jackson json解析器不喜欢这样,我必须编写一个转换器来应对它。

我可以告诉API的维护者修复API,还是这个有效的Json和我的应用应该处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

JSON是一种序列化格式。仅此而已。只要对象采用有效的JSON格式,您就可以接收任何内容。

您可以通过一个请求收到:

"user" : {
    "avatar": "https://......0914.jpg"
}

然后是下一个请求

"foo" : {
    "bar": "baz"
}

它仍然有效 JSON

您正在使用的API(序列化对象的API)应该为相同的函数提供一致的结果(或者至少记录不同类型的可能结果)。

这不仅适用于JSON,而且适用于任何序列化格式:如果您从同一API获得不一致的结果(并且未记录这些结果),那么您是否正在接收JSON,XML,二进制文本,纯文本,或者诸如此类。

所以,是的,如果您收到同一请求的不同对象格式,并且未记录,则API不一致,您应该联系API开发人员并让他们修复它或记录它。