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;
}
我有一个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;
}