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

时间:2018-02-11 03:38:27

标签: java json spring jackson jackson-databind

我正在使用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"
            },
        }
    ]
}

当我用杰克逊的ObjectMapper解析它时,它会抛出一个错误,说我还没有定义"分组"使用@JsonProperty。问题是我不关心这个初始标题,但如果我忽略它(使用@JsonIgnoreProperties("分组"),那么其余的数据将被跳过,我目前最终得到一个对象中包含defaault构造函数值。

我是否需要创建一个抛弃变量,还是需要重构我的对象/类?

1 个答案:

答案 0 :(得分:1)

有两种可能性:

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);