Java 安全地忽略包含所有其他对象的JSON属性
我正在使用SpringBoot,正在使用Jackson解析JSON文件。文件看起来像这样Java 安全地忽略包含所有其他对象的JSON属性,java,json,spring,jackson,jackson-databind,Java,Json,Spring,Jackson,Jackson Databind,我正在使用SpringBoot,正在使用Jackson解析JSON文件。文件看起来像这样 { "grouping": [ { "obj1": "value1", "obj2": "value2", "obj3": "value3", "obj4": "value4" }, { "obj1": "value1",
{
"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定义“分组”。问题是我不关心这个初始标题,但是如果我忽略它(使用@JsonIgnoreProperties(“分组”),那么其余的数据将被跳过,并且我当前将得到一个包含default构造函数值的对象
我需要创建一次性变量还是需要重新构造对象/类?有两种可能: 1) 创建变量
分组
并将结果解析为对象:
例如:
ObjectMapper mapper = new ObjectMapper();
Holder holder = mapper.readValue(content, Holder.class);
ObjHolder[] objHolder = holder.getGrouping().getObjHolderArray();
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree(content);
JsonNode array = actualObj.get("grouping");
ObjHolder[] objHolders = mapper.treeToValue(array, ObjHolder[].class);
2) 将整个JSON作为JsonNode读取,导航到grouping
,并将其内容解析为数组。例如:
ObjectMapper mapper = new ObjectMapper();
Holder holder = mapper.readValue(content, Holder.class);
ObjHolder[] objHolder = holder.getGrouping().getObjHolderArray();
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree(content);
JsonNode array = actualObj.get("grouping");
ObjHolder[] objHolders = mapper.treeToValue(array, ObjHolder[].class);
嗯,你有一个带有分组数组的对象。。。只需解析一个JSON数组。。。不要创建对象这是正确的,特别需要:
JsonNode-JsonNode=objectMapper.readTree(“文件名”);String arrayString=jsonNode.get(“分组”).toString();MyArraylist=objectMapper.readValue(arrayString,new TypeReference(){})代码>