使用Jackson解析嵌套的JSON数组

时间:2016-12-21 10:22:26

标签: java json jackson

我使用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 listtarget是正确的,但datapoints为空。

我的初步解决方案取自this answere。

我的问题是,为什么datapoints没有按预期解析?这对于数组中的空值有什么用吗?

1 个答案:

答案 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;