gpt4 book ai didi

java - 使用 Gson 将对象数组解析为字符串数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:11:38 26 4
gpt4 key购买 nike

我有一个很大的 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\"}";

谢谢你:)

最佳答案

像这样的东西应该可以工作:

public List<String> convertToStringArray(File file) throws IOException {
List<String> result = new ArrayList<>();
String data = FileUtils.readFileToString(file, "UTF-8");
JsonArray entries = (new JsonParser()).parse(data).getAsJsonArray();
for (JsonElement obj : entries)
result.add(obj.toString());
return result;
}

我使用了 apache.commons.io 的文件阅读器,但您可以将其替换为 native Java 阅读器...此外,如果您需要 topics[0] = 在每个字符串中,您可以添加:

result.add(String.format("topics[%s] = %s", result.size(), obj.toString()));

这些是从 gson 中使用的导入:

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

关于java - 使用 Gson 将对象数组解析为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com