【发布时间】:2017-05-15 08:29:11
【问题描述】:
我有一个很大的 JSON 文件 (> 1Gb),其中包含一组对象:
[
{
"Property1":"value",
"Property2":{
"subProperty1":"value",
"subProperty2":[
"value",
"value"
]
},
"Property3":"value"
},
{
"Property1":"value",
"Property2":{
"subProperty1":"value",
"subProperty2":[
"value",
"value"
]
},
"Property3":"value"
}
]
目前,我使用 Gson 解析这个 JSON,但它不起作用,我有以下错误:java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
为了解析这个 JSON,我做了以下操作:
reader = new BufferedReader(new FileReader(jsonFile));
Gson gson = new GsonBuilder().create();
Type typeArray = new TypeToken<List<String>>(){}.getType();
List<String> topics = gson.fromJson(reader, typeArray);
我想将此 JSON 数组解析为字符串数组。换句话说,我想要一个 Java 字符串列表而不是 Java 对象列表。像这样:
topics[0] = "{\"Property1\":\"value\",\"Property2\":{\"subProperty1\":\"value\",\"subProperty2\":[\"value\",\"value\"]},\"Property3\":\"value\"}";
topics[1] = "{\"Property1\":\"value\",\"Property2\":{\"subProperty1\":\"value\",\"subProperty2\":[\"value\",\"value\"]},\"Property3\":\"value\"}";
谢谢你:)
【问题讨论】:
-
我不确定它是否有效。解析整个文件并将单个对象重新格式化回 json 字符串有什么问题?是内存问题吗?
-
@Thomas 我认为这不是内存问题。我认为这是一个解析问题。对于我的测试,我有一点 JSON (~10Mb)
-
你能检查一下 JSON 文件的字符集编码吗?例如,它可能是 UTF 字节顺序标记的问题。请粘贴一个可以复制的最小示例 JSON。