有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java读取大型json文件

我有一个结构复杂的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解析器将无法工作,因为它将数据保存到内存中。我试图使用Jackson,但发现很难检查所有对象,因为每次只需要一个令牌。对于这种JSON格式,使用Jackson的流媒体和树结构的有效方法是什么

或者我可以通过什么方式使用脚本获取数据并使用它


共 (1) 个答案

  1. # 1 楼答案

    可能您可以将JsonParser调用nextToken()提前几次,直到获得令牌ID\u START\u数组,然后调用nextToken()移动到第一个item对象的开头,然后将表示“item”的解析器和POJO类提供给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的东西生成

    或者完全跳过Jackson——自己编写一个小标记器,提取单个“item”json元素并将它们输入JSONSimple。这样,您可能会有一点车轮改造,但将避免获得大量的依赖关系