Java 将JsonArray添加到JsonObject生成的转义字符(gson)
我正在使用库创建一个json对象,并向其中添加一个json数组。我的代码如下所示: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
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"}]}