快速&在Java中逐行读取大型JSON文件的有效方法

时间:2017-04-10 16:24:56

标签: java performance file-io java.util.scanner bufferedreader

我在JSON文件中有1亿条记录,需要一种有效且快速的方法来从JSON中的java文件中读取数组数组。

JSON文件看起来像:

[["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"],...,["XYZ",...,"ABC"],
 ["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"],...,["XYZ",...,"ABC"],
 ...
 ...
 ...
 ,["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"]]

我希望逐行阅读此JSON文件:

先阅读:

["XYZ",...,"ABC"]

然后:

["XYZ",...,"ABC"]

等等:'

...
...
...
["XYZ",...,"ABC"]

我如何阅读这样的JSON文件,我知道它看起来不像JSON文件,但我需要以这种格式读取此文件,保存为.JSON

3 个答案:

答案 0 :(得分:4)

您可以使用JSON Processing API (JSR 353)以流式方式处理数据:

response = await http_client.fetch("http://example.com", method="HEAD")

答案 1 :(得分:2)

请查看Jackson Streaming API,

我猜你看起来像这样 -  https://www.ngdata.com/parsing-a-large-json-file-efficiently-and-easily/

和 - https://stackoverflow.com/a/24838392/814304

主要的事情 - 如果你有一个大文件,你需要逐个阅读和处理文件。

答案 2 :(得分:1)

您可以使用JsonSurfer通过JsonPath提取所有内部JSON数组:$ [*]

  <xx.xx.NonScrollListView
        android:id="@+id/lv_nonscroll_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </xx.xx.NonScrollListView>

它不会将整个Json加载到内存中。 JSON数组将逐个处理。