带多个对象的流Json文件

时间:2019-06-11 06:23:32

标签: java json gson streaming

我必须解析大型文本文件,其中包含多个用换行符分隔的json对象。再次,json对象体积很大,必须根据指定的Json路径进行解析,然后将其存储在DB中。

对于流文本文件,我正在使用apache commons LineIterator逐行读取。

示例:

        LineIterator it = FileUtils.lineIterator(f, "UTF-8");
        int i = 0;
        while (it.hasNext()) {
            readStream(it.nextLine());
        }

对于流json对象,我更喜欢使用来自的JsonReader com.google.gson.stream.JsonReader。

示例:

        Gson gson = new GsonBuilder().create();
        JSONObject obj = new JSONObject(line);
        JSONArray json_array = obj.getJSONArray("objectName");

        JsonReader reader2 = new JsonReader(new 
        StringReader(json_array.toString()));
        reader2.beginArray();
        while (reader2.hasNext()) {
            ObjectPOJO orgTree = gson.fromJson(reader2, ObjectPOJO.class);
            .../ Do something with the object           
        }
        reader2.endArray();
        reader2.close();

但是这里需要担心的是,当我逐行读取文件时,整行都被读入内存,并且使用gson流没有任何意义(因为已将json对象的行已加载到内存中)。

将文件流与JsonReader一起使用:

JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));

将无济于事,因为行的大小未知,并且每行都是一个json对象。

有人能建议用什么方法更好地同时传输文件和json对象吗?

感谢您的帮助。

谢谢

0 个答案:

没有答案