反序列化一个可以包含多种类型的数组

时间:2021-05-27 18:06:16

标签: java json jackson deserialization json-deserialization

我有一些 JSON 可以保存两个映射数组的数组,或者只是映射(我知道这看起来很愚蠢)。我无法确定 ArrayOrMap 类应该是什么样子才能反序列化这个结构。

{
  "example": [
      [
        {
          "key1": "value1"
        },
        {
          "key2": "value2"
        }
      ],
      {
        "key3": "value3"
      }
    ]
}

我正在尝试使用 ObjectMapper 和 Jackson 的 @JsonCreator 注释反序列化:

    @Getter
    static class StackOverflowExample {
        private final ArrayOrMap[] example;

        @JsonCreator
        StackOverflowExample (
                @JsonProperty("example") ArrayOrMap[] example,
        ) {
            this.example = example;
        }
    }

    @Getter
    static class ArrayOrMap {
        ???
    }

    ...
    // code that attempts to deserialise
    final StackOverflowExample result = objectMapper.readValue(
            data,
            StackOverflowExample.class
    );

我正在尝试将 JSON 反序列化为一个对象数组,每个对象可以是一个映射数组,也可以只是一个映射,但我不知道 ArrayOrMap 的类应该是什么样的。似乎对象反序列化总是需要某种键,但这里我只是反序列化一个对象数组,所以我没有要查看的键。

我知道这个 JSON 的结构一开始很糟糕,但现在改变它需要付出很大的努力。

感谢任何帮助,谢谢!

0 个答案:

没有答案
相关问题