安全地忽略包含所有其他 Objects 的 JSON 属性

Safely Ignore JSON Property that Contains All Other Objects

我正在使用 Spring Boot,并且正在使用 Jackson 解析 JSON 文件。文件看起来像这样

{
    "grouping": [
        {
            "obj1": "value1",
            "obj2": "value2",
            "obj3": "value3",
            "obj4": "value4"
        },
        {
            "obj1": "value1",
            "obj2": "value2",
            "obj3": "value3",
            "obj4": "value4"
            },
        },
        {
            "obj1": "value1",
            "obj2": "value2",
            "obj3": "value3",
            "obj4": "value4"
            },
        }
    ]
}

当我用 Jackson 的 ObjectMapper 解析它时,它抛出一个错误,说我没有使用 @JsonProperty 定义 "grouping"。问题是我不关心这个初始标题,但如果我忽略它(使用@JsonIgnoreProperties("grouping"),那么其余数据将被跳过,我目前得到一个 object其中包含默认构造函数值。

我需要创建一个一次性变量还是需要重组我的 objects/classes?

有两种可能:

1) 创建变量 grouping 并将结果解析为对象: 例如:

ObjectMapper mapper = new ObjectMapper();
Holder holder = mapper.readValue(content, Holder.class);
ObjHolder[] objHolder = holder.getGrouping().getObjHolderArray();

2) 将整个 JSON 读取为 JsonNode,导航到 grouping 并将其内容解析为数组。例如:

ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree(content);
JsonNode array = actualObj.get("grouping");
ObjHolder[] objHolders = mapper.treeToValue(array, ObjHolder[].class);