gpt4 book ai didi

java - 将 JsonArray 添加到 JsonObject 生成的转义字符(gson)

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

我正在使用 GSON库来创建一个 json 对象并向其添加一个 json 数组。我的代码看起来像这样:

JsonObject main = new JsonObject();
main.addProperty(KEY_A, a);
main.addProperty(KEY_B, b);

Gson gson = new Gson();
ArrayList<JsonObject> list = new ArrayList<>();
JsonObject objectInList = new JsonObject();
objectInList.addProperty(KEY_C, c);
objectInList.addProperty(KEY_D, d);
objectInList.addProperty(KEY_E, e);
list.add(objectInList);
main.addProperty(KEY_ARRAY,gson.toJson(list));

输出似乎包含一些意外的斜线:

{"A":"a","B":"b","array":["{\"C\":\"c\",\"D\":\"d\",\"E\":\"e\"}"]}

最佳答案

当你这样做时:

main.addProperty(KEY_ARRAY, gson.toJson(list));

您在 JsonObject 中添加键值对 String -> String,而不是 String -> JsonArray[JsonObject]

现在你得到这个斜杠是因为当 Gson 将这个列表序列化为一个字符串时,它会在数组中保留关于 json 对象中的值的信息(这是字符串,所以引号需要通过反斜杠转义)。

您可以通过设置

来观察相同的行为
Gson gson = new GsonBuilder().setPrettyPrinting().create();

那么数组的输出是:

"array": "[\n  {\n    \"C\": \"c\",\n    \"D\": \"d\",\n    \"E\": \"e\"\n  }\n]"

但是您要寻找的是正确的映射,您需要使用 add 方法并提供一个 JsonArray 作为参数。因此,将您的 list 更改为 JsonArray:

JsonArray list = new JsonArray();

并使用add代替addProperty:

main.add("array", list);

你会得到输出:

{"A":"a","B":"b","array":[{"C":"c","D":"d","E":"e"}]}

关于java - 将 JsonArray 添加到 JsonObject 生成的转义字符(gson),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29628853/

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