【发布时间】:2014-07-02 17:14:02
【问题描述】:
我有运行 web 服务的 java 库,这些库以 XML 形式返回响应。 Web 服务都围绕提供有关项目的详细信息列表。最近,进行了更改以允许服务通过简单地将 XML 转换为 JSON 来返回 JSON。在查看响应时,我发现它们并不像我想象的那么容易解析。例如,返回项目详细信息的 Web 服务。
如果没有item,返回的JSON如下:
{"ItemResponse":""}
如果有 1 个项目,则响应如下(现在 itemResponse 有一个对象作为值而不是字符串):
{"ItemResponse":{"Items":{"Name":"Item1","Cost":"$5"}}}
如果有两个或更多项目,则响应是(现在项目有一个数组作为值而不是一个对象):
{"ItemResponse":{"Items":[{"Name":"Item1","Cost":"$5"},{"Name":"Item2","Cost":"$3"}]}}
要解析这些,您需要几个我认为很笨重的 if/else。
如果回答是:
- 0 项:[]
- 1 项:[{"Name":"Item1","Cost":"$5"}]
- 2 项:[{"Name":"Item1","Cost":"$5"},{"Name":"Item2","Cost":"$3"}]
这样总是有一个数组,它包含itemdata。一个额外的包装对象是可能的:
- 0 项:{“项”:[]}
- 1 项:{"Items":[{"Name":"Item1","Cost":"$5"}]}
- 2 个项目:{"Items":[{"Name":"Item1","Cost":"$5"},{"Name":"Item2","Cost":"$3"}]}
我在 JSON 方面没有经验,所以我的问题是,如果您是一名必须使用这些 Web 服务的开发人员,您希望如何格式化 JSON 响应?即使没有项目,总是返回一个一致的数组是否更好,或者这通常不重要?或者一个数组还不够,你真的希望数组周围有一个包装器对象吗?
关于此的约定/标准是什么?
【问题讨论】:
-
重要的是记录输出的格式。如果您确实使用一致的格式(即始终拥有一个数组),那么您会发现记录它(并让用户处理它)要容易得多。我会选择第二个版本,因为它允许您添加不同类型的数据(包括错误!)...
标签: json