我有清单
Gson gson = new Gson();
List<String> exampleList = new ArrayList<String>();
exampleList.add("aaa");
exampleList.add("bbb");
exampleList.add("ccc");
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("test", gson.toJson(exampleList));
jsonObject是{“test”:“[\”aaa \“,\”bbb \“,\”ccc \“]”}
但我需要得到以下 { “测试”:[ “AAA”, “BBB”, “CCC”]}
这样做的方法是什么?
replaceAll以多种方式解决了这个问题
答案 0 :(得分:5)
您正在添加键值映射String -> String
,这就是引号被转义的原因(实际上您的值是toString()
方法给出的列表的字符串表示形式)。如果您想要映射String -> Array
,则需要将列表转换为JsonArray
并将其添加为属性。
jsonObject.add("test", gson.toJsonTree(exampleList, new TypeToken<List<String>>(){}.getType()));
答案 1 :(得分:1)
不要混用Gson和JsonObject,
1)如果你需要{&#34;测试&#34;:[&#34; aaa&#34;,&#34; bbb&#34;,&#34; ccc&#34;]}使用GSON你应该定义
public class MyJsonContainer {
List<String> test = new ArrayList<String>();
...
// getter and setter
}
并使用
List<String> exampleList = new ArrayList<String>();
exampleList.add("aaa");
exampleList.add("bbb");
exampleList.add("ccc");
MyJsonContainer jsonContainer = new MyJsonContainer();
jsonContainer.setTest(exampleList);
String json = gson.toJson(jsonContainer); // this json has {"test":["aaa","bbb","ccc"]}
2)如果你需要{&#34;测试&#34;:[&#34; aaa&#34;,&#34; bbb&#34;,&#34; ccc&#34;]}使用JsonObject你应该添加
List<String> exampleList = new ArrayList<String>();
exampleList.add("aaa");
exampleList.add("bbb");
exampleList.add("ccc");
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("test", exampleList);
但是从不尝试混合使用Gson和JsonObject,因为jsonObject.addProperty(&#34; test&#34;,text)不允许将文本添加为json并且总是转义此文本。
答案 2 :(得分:0)
String jsonFormattedString = jsonStr.replaceAll("\\\\", "");
使用它从对象字符串中删除\
。