Gson 库不能像预期的那样可靠地解析大型 JSON 文件
Gson library is not working reliably as intended for parsing large JSON file
我必须解析一个非常大的 JSON 文件(文件大小可能达到几 GB),所以我不能只将整个 JSON 字符串加载到内存中并将其解析为一个对象,我必须以某种方式逐行读取 JSON 字符串并解析它。我目前正在使用 Gson
库中的 JsonReader
,它运行良好,但最近我发现它偶尔会抛出一个错误 Unterminated string at line 1 column xxxxxxxxx path $.fieldname[random index].fieldname[random index].fieldname
,但是当我使用不同的库解析它时,例如 Jackson
,解析很完美(这个文件不是很大,只有50MB,所以我可以把它加载到内存中并解析成一个对象),所以这是Gson
中的一个BUG吗?如果是,是否有任何其他 JAVA 库可以用来做同样的事情?我将不胜感激任何答案!
PS: 我正在使用 gson-2.8.2
编辑:我用Gson
再次测试了同一个文件,出现了同样的错误,但是在不同的行和不同的位置,所以确认这是Gson
中的BUG吗?
看来您应该检查 Gson
的 GitHub 问题:https://github.com/google/gson/issues
除此之外,一个最小的例子来重现那将是好的;您甚至可以生成这样的文件来制作示例 self-contained ;-)
顺便说一句,请更改标题,因为您显然知道该怎么做。它只是不能可靠地与 Gson 一起工作...
我也用 Jackson
库测试了解析,但仍然出现相同类型的错误,但是,在许多测试中,结果表明 Gson
和 Jackson
库可以有一个问题(并不总是)处理 JSON 文件打印不漂亮(意味着 JSON 没有正确的缩进),因为我测试的所有 JSON 文件都把整个 JSON 字符串(技术上仍然是合法的 JSON),在我将其格式化为缩进后,解析成功(Gson
和 Jackson
),希望这可以帮助遇到与我相同问题的任何人
我必须解析一个非常大的 JSON 文件(文件大小可能达到几 GB),所以我不能只将整个 JSON 字符串加载到内存中并将其解析为一个对象,我必须以某种方式逐行读取 JSON 字符串并解析它。我目前正在使用 Gson
库中的 JsonReader
,它运行良好,但最近我发现它偶尔会抛出一个错误 Unterminated string at line 1 column xxxxxxxxx path $.fieldname[random index].fieldname[random index].fieldname
,但是当我使用不同的库解析它时,例如 Jackson
,解析很完美(这个文件不是很大,只有50MB,所以我可以把它加载到内存中并解析成一个对象),所以这是Gson
中的一个BUG吗?如果是,是否有任何其他 JAVA 库可以用来做同样的事情?我将不胜感激任何答案!
PS: 我正在使用 gson-2.8.2
编辑:我用Gson
再次测试了同一个文件,出现了同样的错误,但是在不同的行和不同的位置,所以确认这是Gson
中的BUG吗?
看来您应该检查 Gson
的 GitHub 问题:https://github.com/google/gson/issues
除此之外,一个最小的例子来重现那将是好的;您甚至可以生成这样的文件来制作示例 self-contained ;-)
顺便说一句,请更改标题,因为您显然知道该怎么做。它只是不能可靠地与 Gson 一起工作...
我也用 Jackson
库测试了解析,但仍然出现相同类型的错误,但是,在许多测试中,结果表明 Gson
和 Jackson
库可以有一个问题(并不总是)处理 JSON 文件打印不漂亮(意味着 JSON 没有正确的缩进),因为我测试的所有 JSON 文件都把整个 JSON 字符串(技术上仍然是合法的 JSON),在我将其格式化为缩进后,解析成功(Gson
和 Jackson
),希望这可以帮助遇到与我相同问题的任何人