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

Java 将JsonArray添加到JsonObject生成的转义字符(gson),java,android,json,gson,Java,Android,Json,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 J

我正在使用库创建一个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));
当您这样做时:

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
作为参数。因此,将您的
列表
更改为
JsonArray

JsonArray list = new JsonArray();
并使用
add
而不是
addProperty

main.add(“数组”,列表)

您将得到以下输出:

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

这对你有帮助吗?引用:“您需要向Gson提供您正在使用的列表的特定泛型类型的信息(或与之一起使用的任何泛型类型)。”
main.addProperty(KEY_数组,Gson.toJson(List,new-TypeToken(){}.getType())不幸的是没有什么不同嗯。。。实际上,在我看来,斜杠是用于转义数组值中的双引号字符,因为\“是java和C中双引号的转义字符。基本上,如果在输出中打印该值,应该就可以了。检查。这解决了它!谢谢
{"A":"a","B":"b","array":[{"C":"c","D":"d","E":"e"}]}