读取内存不足的大型JSON文件

时间:2017-11-26 10:15:52

标签: java json notepad++ json-view

我有一个121MB的大型JSON文件。我想阅读它的结构和数据。我无法用Chrome的notepad ++和json编辑器插件阅读它。我试过用java读它。简单的json阅读也是例外:

  

线程“main”中的异常java.lang.OutOfMemoryError:GC开销   超出限额

如果我使用jackson流媒体API。如何完整阅读结构和数据?我不知道它的json结构键和值。我使用了这样的代码:

import java.io.File;
import java.io.IOException;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;


public class JacksonStreamExample {
    public static void main(String[] args) {

        try {

            JsonFactory jfactory = new JsonFactory();

            /*** read from file ***/
            JsonParser jParser = jfactory.createParser(new File(
                    "E:\\NUST\\Semester 3\\region_descriptions.json"));
            while (jParser.nextToken() != JsonToken.END_OBJECT) {

            System.out.println(jParser.getCurrentName());
            jParser.nextToken();
            System.out.println(jParser.getText());
            }
            jParser.close();

        } catch (JsonGenerationException e) {

            e.printStackTrace();

        }catch (IOException e) {

            e.printStackTrace();

        }

    }

}

有没有办法用任何文本或JSON查看器阅读它?还是用java代码?如果是java代码,如何读取JSON结构?

2 个答案:

答案 0 :(得分:2)

如果您只想预览文件中的常规结构和数据(而不必将整个文件加载到内存中),则可以使用Cluria(http://www.cluria.com)。如果您只想预览文件中的内容,它将允许非常快地加载非常大的JSON文件。

使用来自SQuAD的dev JSON文件的示例:https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v2.0.json

enter image description here

免责声明:我创建了Cluria。

答案 1 :(得分:1)

Notepad ++允许您一次打开一个大文件。

尝试关闭记事本++中已打开的所有文件并单独打开此(大)文件。

我遇到了同样的问题,我上面提到的问题解决了我的问题。

编辑:如果这甚至无法解决您的问题,那么这是您系统中的内存问题。或者,您可以使用010Editor它允许您打开空间高达5GB的大文件。