2016-05-23 54 views
1

我使用Gson处理巨大的 Json文件包含多个Json根元素。 喜欢:Gson处理多个json根元素

{"a": 1}     
{"a": 2}   
{"a": 3} 

没有单独的逗号那些根元件之间。

我知道它不是一个有效的格式,我无法控制这个文件的格式,但我们可以编辑文件,如果有必要。

目前我的解决方案是逐行读取文件并逐个解析它们。但我认为这不是每个效率。

另一种解决方案是编辑文件并更改所有根元素,以便它们位于Json数组中。但是,我认为这不是一个好方法。我的文件很大。

有人可以帮助我吗?如果有其他包可以解决这个问题。我很高兴切换到。 谢谢

+0

当你陈述巨大......你是否想要1000单位?千位? 1万亿兆字节?据我所知,在Android设备中可以使用高达80兆字节的JSON(速度有所减慢,但AsynkTasks可以完成这项工作),并且Windows Server IIS中的500兆字节以可接受的速度运行。 – Bonatti

+0

嗨@Bonatti谢谢你的回复。该文件实际上是2GB。我需要对这些数据进行一些预处理。 –

+0

如果有一个时间窗口供您处理,我强烈建议以较小的数据块将数据分解并分解。一个例子是在较小的“输出”中打破文件,每个文件包含一个较小的分组(比如1〜1000个元素),然后运行该数据的JSON/Gson消耗。 – Bonatti

回答

0

编写一个FilterInputStream实现插入顶级数组声明并插入逗号。然后你可以把它传给GSON来解析。

如果文件真的很大,并且您不能在存储器中保存最终的大结构,您可以编写FilterInputStream将输入分解为更小但仍然有效的顶层块。

在这里的可能性是无止境的,但我认为某种FilterInputStream将是一个很好的解决方案。

+0

嗨,吉姆我认为这种方法值得尝试,谢谢你的建议。 –