我有一个班级,其中我有多个名为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#用户
关于我该如何解决这个问题的任何想法?
答案 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;
}