使用gson在Java中序列化千兆字节的python对象

时间:2014-12-01 15:20:20

标签: java python serialization gson bigdata

我有许多使用python序列化并转储到文本文件的哈希映射。 我正在尝试使用gson将这些数据反序列化为对象。

序列化适用于小型文件(~MBs),但是对于千兆字节大小的文件会出错。

错误是:

Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1230 path $.
at com.google.gson.Gson.fromJson(Gson.java:825)
at ReadFromJson.main(ReadFromJson.java:47)
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1230 path $.
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1573)
at com.google.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1031)
at com.google.gson.stream.JsonReader.nextString(JsonReader.java:827)
at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:358)
at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:346)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:187)
at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
at com.google.gson.Gson.fromJson(Gson.java:810)

1 个答案:

答案 0 :(得分:0)

您可能遇到了一些限制,这是因为Gson尝试将整个JSON结构加载到内存中。您应该考虑使用支持流式传输数据的JSON解析器,而不必尝试一次解析所有内容。

其中一个是杰克逊及其Streaming API