首页 > 解决方案 > HTTP 请求可能返回两种结构的对象

问题描述

HTTP 请求可能返回两种结构的对象。返回成功时是一个结构,返回失败时是另一个结构。我无法得到成功或失败的迹象。我只能收到以下结构。我如何用java解析?

SuccessResponse:
{
    "id":1,
    "name":"lulu"
    "score":[100,97,89]
}

ErrorResponse:
{
    "errorCode": "string",
    "errorMessage": "string"
}

标签: javajson

解决方案


那是 JSON - 大多数使用 JSON 的库都会以一种或另一种方式支持这一点:

-> 如果你将返回解析为一个简单的 Map<>,你可以检查 Map 中是否有一个键“errorCode”

-> 如果解析为对象,则可以指定响应对象中的所有字段并允许 id 和 score 为空值。然后你可以简单地if(obj.errorCode != null)

在杰克逊,它可能看起来像这样

 @JsonIgnoreProperties(ignoreUnknown = true)
 @JsonInclude(Include.NON_NULL)
 public class MyReturn {
    Integer id;
    String name;
    List<Integer> score;
    String errorCode;
    String errorMessage;
 }

加上每个......


推荐阅读