使用缺少字段的杰克逊反序列化json

时间:2012-09-03 19:42:08

标签: java json jackson deserialization

我正在尝试使用Jackson反序列化这个JSON,我遇到了阵列部分的问题,你可以看到没有字段名称。 java代码需要什么样才能反序列化呢?

   {
       "foo":[
          [
             "11.25",
             "0.88"
          ],
          [
             "11.49",
             "0.78976802"
          ]
       ],
       "bar":[
          [
             "10.0",
             "0.869"
          ],
          [
             "9.544503",
             "0.00546545"
          ],
          [
             "9.5",
             "0.14146579"
          ]
       ]
    }

谢谢,

BC

1 个答案:

答案 0 :(得分:1)

最接近的映射(没有更多上下文)将使foobar成为双数组(2维数组)的数组。

public class FooBarContainer {

    private final double[][] foo;
    private final double[][] bar;

    @JsonCreator
    public FooBarContainer(@JsonProperty("foo") double[][] foo, @JsonProperty("bar") double[][] bar) {
        this.bar = bar;
        this.foo = foo;
    }
}

使用:

public static void main(String[] args) throws IOException {
    ObjectMapper mapper = new ObjectMapper();
    FooBarContainer fooBarContainer = mapper.readValue(CONTENT, FooBarContainer.class);

    //note: bar is visible only if main is in same class
    System.out.println(fooBarContainer.bar[2][1]); //0.14146579
}

杰克逊将这些数据反序列化到这个类中没有任何问题。