从字符串显示中删除反斜杠(gson)

时间:2015-12-10 11:47:20

标签: java json gson

我有清单

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以多种方式解决了这个问题

3 个答案:

答案 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("\\\\", "");

使用它从对象字符串中删除\