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

时间:2015-12-23 13:43:16

标签: java android json jackson android-json

我有一个班级,其中我有多个名为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调用将始终为每个请求返回results字段

例如http://api.testapp.com/get_user_profile将返回此JSON

results密钥将由APIUser

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

然后http://api.testapp.com/login将返回此JSON

results密钥将由APILogin

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

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

  

com.fasterxml.jackson.databind.JsonMappingException:多个字段   代表财产“结果”:   id.testapp.android.testapp.jsonobjects.APIResults#login vs   id.testapp.android.testapp.jsonobjects.APIResults#用户

关于我该如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:1)

简单地使用MAP。杰克逊将负责填充MAP。只需为每个字段提供setter和getter。根据您的上下文,您可以在地图

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

    @JsonProperty("error")
    public APIError error;

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