我有以下形式的api响应:
{
"data": [
{
"field1": "string_1",
"field2": 2,
"field3": "string_3",
"field4": "string_4"
}
]
}
也可以为空:
{
"data": []
}
我以以下方式调用api:
apiResponse = oAuth2RestTemplate.exchange(theURL, HttpMethod.GET, requestEntity, APIResponse.class);
我无法控制配置 oAuth2RestTemplate
,但我可以定义 APIResponse
班级。我应该如何定义它,使上面的行不返回以下异常:
org.springframework.http.converter.HttpMessageConversionException: Type definition error: ... cannot deserialize from Object value (no delegate- or property-based Creator)
到目前为止,我掌握的情况如下:
public class DataElements {
private String field1;
private int field2;
private String field3;
private String field4;
// constructor and getters and setters
}
和
@JsonSerialize
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@JsonIgnoreProperties(ignoreUnknown = true)
public class APIResponse {
List<DataElements> data;
// constructor and getters and setters
}
2条答案
按热度按时间7ajki6be1#
正如jacksongithub上指定的那样,它不要求类具有默认构造函数,但是如果没有其他可用的构造函数,它将尝试使用它。
将默认构造函数添加到
APIResponse
初始化或指示jackson使用由您指定的另一个构造函数。这可以通过使用@JsonCreator
然后用它的参数@JsonProperty
,参见注解文档所以你会得到这样的结果:
wfsdck302#
我不知道这是不是个好办法,也许你可以试试