我使用 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>>() {});
这部分有效,外部列表
和目标
是正确的,但是数据点
为空。
我的初始解决方案取自this回答。
我的问题是,为什么数据点
没有按预期解析?这与数组内的空值有关吗?
最佳答案
您可以为 datapoints
字段编写自定义 JsonDeserializer
。
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;
关于java - 使用 Jackson 解析嵌套 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41260454/