我有一个结构复杂的json文件。
{"Objects":{"items":{"item":[
{
"field1": "value1",
"field2": "value2",
"field3":[
{
"label1":"1",
"label2":"2"
},
{
"label1":"3",
"label2":"4"
}]
}
,
{
//same structure as above object
}
]}}}
文件大小略大于1GB。我需要读取一个对象并查看特定标签的值是什么,如果它与我的列表匹配,我需要在另一个文件中写入该对象,否则不会。
我知道像JSONSimple这样的普通JSON解析器无法正常工作,因为它将数据保存到内存中。我正在尝试使用杰克逊,但很难找到所有对象,因为它一次需要一个令牌。对于这种JSON格式,使用Jackson的流和树结构的有效方法是什么。
或者我可以用什么方式使用脚本获取数据并使用它?
答案 0 :(得分:0)
可能你可以多次调用JsonParser调用nextToken()直到你获得Token ID_START_ARRAY,调用nextToken()移动到第一个项目对象的开头,然后提供解析器和表示" item&#的POJO类# 34;进入ObjectMapper.readValue()(https://github.com/FasterXML/jackson-databind/blob/master/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java),重复直到找不到更多的对象。 POJO可以手写或使用https://github.com/astav/JsonToJava/wiki/JsonToJava
之类的东西生成或完全跳过杰克逊 - 自己写一个小分数器,将提取个人"项目" json元素并将它们提供给JSONSimple。这样你可能会有一些轮子改造,但会避免获得很多依赖。