0
我正在嘗試爲API測試進行restTemplate調用。返回的json是一個嵌套多層次的。無法爲嵌套Json使用泛型進行restTemplate調用
{
"code": 200,
"data": {
"result": {
"publicId": "xyz"
}
}
}
我有以下類作爲包裝:
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public abstract class RestCallResponse<T> {
private int code;
protected RestCallResponse(int code) {
this.code = code;
}
protected RestCallResponse(){}
@JsonProperty("data")
public Map<?, ?> getRestCallResponse() {
return ImmutableMap.of("result", getResult());
}
@JsonIgnore
protected abstract T getResult();
public int getCode() {
return code;
}
}
然後一個SuccessRestResponse
類擴展這個抽象類:終於
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE)
public class SuccessRestResponse<T> extends RestCallResponse<T> {
@JsonProperty("result")
private T result;
public SuccessRestResponse() {
}
public SuccessRestResponse(T result) {
super(HttpStatus.SC_OK);
this.result = result;
}
protected T getResult() {
return this.result;
}
}
然後,我有實際的數據POJO:
public final class CreatedResponse {
@JsonProperty
private final EntityId publicId;
public CreateCreativeResponse(EntityId publicId) {
this.publicId = publicId;
}
}
在測試情況下,我想提出一個電話這樣:
ResponseEntity<SuccessRestResponse<CreatedResponse>> newResponse =
restTemplate.exchange(requestEntity, new ParameterizedTypeReference<SuccessRestResponse<CreatedResponse>>() {});
但我收到以下錯誤:
nested exception is org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: null value in entry: result=null (through reference chain: com.inmobi.helix.test.api.dao.SuccessRestResponse["data"]);
有什麼建議?我哪裏錯了?