杰克逊对数组内部的数组进行反序列化

时间:2019-11-19 17:05:58

标签: java jackson

我对Json的答复为

"Test1": {
        "Test2": [
            [
                0,
                "US TV",
                []
            ]
        ]
}

我创建了一个

之类的Test2类
    @JsonProperty("Test2")
    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
    Test2[] arrayObjects; 

不确定在Test2类中如何给[],有人可以建议如何为Java中提到的Json响应创建Pojo吗?

1 个答案:

答案 0 :(得分:2)

像这样声明字段:

@JsonProperty("Test2")
Object[][] test2;

或类似这样:

@JsonProperty("Test2")
List<List<Object>> test2;

类型为Object,因为内部数组包含数字,字符串和数组。

该字段的名称无关紧要,因为您已经@JsonProperty为JSON命名了该字段。

您当然也可以做List<Object[]>List<Object>[],但这些看上去有点怪。


更新:证明上述代码有效:

Foo.java

@JsonRootName("Test1")
class Foo {
    @JsonProperty("Test2")
    List<List<Object>> bar;

    public static void main(String[] args) throws Exception {
        Foo foo = new ObjectMapper()
                .configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true)
                .readValue(new File("test.json"), Foo.class);
        System.out.println(foo.bar);
    }
}

test.json

{
    "Test1": {
        "Test2": [
            [
                0,
                "US TV",
                []
            ]
        ]
    }
}

输出

[[0, US TV, []]]