我对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>
答案 0 :(得分:1)
JSON是一种序列化格式。仅此而已。只要对象采用有效的JSON格式,您就可以接收任何内容。
您可以通过一个请求收到:
"user" : {
"avatar": "https://......0914.jpg"
}
然后是下一个请求
"foo" : {
"bar": "baz"
}
它仍然有效 JSON
您正在使用的API(序列化对象的API)应该为相同的函数提供一致的结果(或者至少记录不同类型的可能结果)。
这不仅适用于JSON,而且适用于任何序列化格式:如果您从同一API获得不一致的结果(并且未记录这些结果),那么您是否正在接收JSON,XML,二进制文本,纯文本,或者诸如此类。
所以,是的,如果您收到同一请求的不同对象格式,并且未记录,则API不一致,您应该联系API开发人员并让他们修复它或记录它。