我有一个表示通用API响应的类:
@Setter
@Getter
public final class ApiResponse<T> {
private T data;
}
我在Jackson的帮助下设置了data
,如下所示:
class Converter<T> {
ApiResponse<T> create(){
// some REST calls and form httpResponse before this step
ApiResponse<T> apiResponse = new ApiResponse();
T data = objectMapper
.readValue(httpResponse.body(), new TypeReference<>() {});
apiResponse.setData(data);
return apiResponse;
}
}
然后我尝试将它与自定义对象一起使用,如下所示:
Converter<MyObject> converter = new Converter<>();
ApiResponse<MyObject> apiResponse = converter.create();
但是我观察到apiResponse.getData()
总是返回LinkedHashMap
而不是Myobject
类型。
下面是MyObject
类:
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public final class MyObject {
@JsonProperty("childs")
private ChildObject[] childs;
}
我做错了什么?
下面是http响应体以供参考:
{
"childs": [
{
"freightLineId": "",
"shipmentId": "",
"shipmentVersionId": ""
}
]
}
1条答案
按热度按时间js81xvg61#
您可以尝试使用泛型方法而不是泛型类,并将类类型作为参数传递到方法内部
Converter.java
主码
代码
ApiResponse<T>
主码