【发布时间】:2014-05-09 19:25:53
【问题描述】:
我从 HTTP 请求 API 中得到不同类型的 JSON 响应。可能有几个从 API 返回的 JSON 格式选项。例如,它可能是带有预期数据的有效响应,但在某些情况下,它可能是内部服务器错误详细消息。
目前我正在使用 Gson 将传入的字符串转换为对象,但由于有时它以不同的格式出现,Gson 无法将其转换为提供了不同的模板类。
注意: 错误并不意味着异常。例如,JSON 正文仅包含身份验证失败的信息,例如,调用成功且 JSON 正文为 VALID。 HTTP 实际上总是成功的,将是 200。问题是有时身份验证可能会失败,它会返回不同的 JSON。
String response = restTemplate.getForObject(request, String.class);
ObjectResponse objResponse = gson.fromJson(response, ObjectResponse.class);
您能否建议更好的方法,以便我可以处理不同类型的响应?或者,也许您知道完全不同的方法。
谢谢!
【问题讨论】:
-
请注意,HTTP 标头具有状态码。您可能想要使用它(200 = 正常,404 = 未找到,500 = 内部服务器错误等)
-
嗯,你总是可以像大多数非 Java 世界那样做——解析成 Maps 和 Lists,然后检查生成的树。如果您需要创建一个对象,请编写一个接受 Map 的构造函数——流程真的很自然。