我使用jacson来解析以下JSON数组
[
{
"target": "something",
"datapoints": [
[
null,
1482223380
]]}]
进入此POJO
public class Response {
private String target;
private List<List<Double>> datapoints;
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public List<List<Double>> getData() {
return datapoints;
}
public void setData(List<List<Double>> data) {
this.datapoints = data;
}
}
使用以下代码
objectMapper.readValue(json, new TypeReference<List<Response>>() {});
这部分有效,outer list
和target
是正确的,但datapoints
为空。
我的初步解决方案取自this answere。
我的问题是,为什么datapoints
没有按预期解析?这对于数组中的空值有什么用吗?
答案 0 :(得分:1)
您可以为JsonDeserializer
字段编写自定义datapoints
。
class MyDatapointsDeserializer extends JsonDeserializer<List<List<Double>>> {
private static final TypeReference<List<List<Double>>> TYPE_REF =
new TypeReference<List<List<Double>>>() {};
@Override
public List<List<Double>> deserialize(
JsonParser jp, DeserializationContext ctxt) throws IOException {
return jp.readValueAs(TYPE_REF);
}
}
然后相应地注释该字段。
@JsonDeserialize(using = MyDatapointsDeserializer.class)
private List<List<Double>> datapoints;