java - 使用 Jackson 解析嵌套 JSON 数组

标签 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>>() {});

这部分有效,外部列表目标是正确的,但是数据点为空。

我的初始解决方案取自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/

相关文章:

java - 如何从 json 数组获取 Json 对象并将其与模型类一起使用

javascript - 无法在 PHP 中访问 JSON 数组

java - 使用 Jackson 序列化类时添加类型信息,以便可以使用接口(interface)类型反序列化而不使用注释?

java - 如何在 Spring bean 中进行 hibernate 分页?

java - Hibernate中embedded member对成员的唯一约束

java - java中从ArrayList中获取值

java - Spark 关闭问题中 Jackson ObjectNode 的 NotSerializableException

具有多语言支持的java swing程序

json - Alamofire 嵌套 JSON 序列化器

java - 从 json 反序列化到包含枚举的对象的问题