Jackson JsonMappingException 错误 - 多个字段表示 属性 'PROPERTY_NAME'

Jackson JsonMappingException Error - Multiple fields representing property 'PROPERTY_NAME'

我有一个class,其中我有多个名为results的字段,(实际上我有12个,但为了这个问题,我只在这个问题中包括了2个)

public class APIRequest {
    @JsonProperty("code")
    public String code;

    @JsonProperty("error")
    public APIError error;

    @JsonProperty("results")
    public APILogin login;

    @JsonProperty("results")
    public APIUser user;
}

我有这个的原因是因为我的后端 API 调用总是 return 每个请求的 results 字段

例如 http://api.testapp.com/get_user_profile 会 return 这个 JSON

然后 results 键将被 APIUser class

映射
{
    "code": "200",
    "results": {
        "name": "Jackson Liu"
        "age": "21"
        "first_name": "Jackson"
        "last_name": "Liu"
    }
}

然后http://api.testapp.com/login会return这个JSON

results 键将被 APILogin class

映射
{
    "code": "200",
    "results": {
        "token": "12u3912edsdnisnknaklsmdlsadmsalma"
        "session_id": "ladlwjopwjwpdmdlndlkadlaasassa"
        "state": "1"
    }
}

因此,我会得到这个错误。

com.fasterxml.jackson.databind.JsonMappingException: Multiple fields representing property "results": id.testapp.android.testapp.jsonobjects.APIResults#login vs id.testapp.android.testapp.jsonobjects.APIResults#user

关于如何解决这个问题有什么想法吗?

为了简单起见,请使用 MAP。 Jackson 将负责填充 MAP。只需为每个字段提供 setter 和 getter。并且根据您的上下文,您可以阅读 Map

中的必填字段
public class APIRequest {
    @JsonProperty("code")
    public String code;

    @JsonProperty("error")
    public APIError error;

    @JsonProperty("results")
    Map<String, String> results;
}