vki*_*ins 7 java android json gson
我正在使用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));
Run Code Online (Sandbox Code Playgroud)
输出似乎包含一些意外的斜杠:
{"A":"a","B":"b","array":["{\"C\":\"c\",\"D\":\"d\",\"E\":\"e\"}"]}
Run Code Online (Sandbox Code Playgroud)
Ale*_* C. 11
当你这样做时:
main.addProperty(KEY_ARRAY, gson.toJson(list));
Run Code Online (Sandbox Code Playgroud)
你String -> String在你的JsonObject,而不是一个中添加一个键值对String -> JsonArray[JsonObject].
现在你得到这个斜杠,因为当Gson将这个List序列化为一个String时,它会保留数组中json对象中值的信息(即字符串,因此引号需要通过反斜杠进行转义).
您可以通过设置观察相同的行为
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Run Code Online (Sandbox Code Playgroud)
然后数组的输出是:
"array": "[\n {\n \"C\": \"c\",\n \"D\": \"d\",\n \"E\": \"e\"\n }\n]"
Run Code Online (Sandbox Code Playgroud)
但是你要找的是拥有正确的映射,你需要使用该add方法并给出一个JsonArrayas参数.因此,改变你list是一个JsonArray:
JsonArray list = new JsonArray();
Run Code Online (Sandbox Code Playgroud)
并使用add而不是addProperty:
main.add("array", list);
你会得到输出:
{"A":"a","B":"b","array":[{"C":"c","D":"d","E":"e"}]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16581 次 |
| 最近记录: |