2015-12-10 2 views
2

Я есть списокудалить обратный слеш с отображением строки (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 есть { "тест": "[\" ааа \», \ "БББ \", \ "ссс \" ] "}

, но мне нужно получить следующий {" тест ": [" ааа», "БББ", "ссс"]}

Что способ сделать это?

replaceAll несколькими способами не решить эту проблему

+0

как один из многих способов jsonObject.addProperty ("test", gson.toJson (exampleList) .replace ("\\", "")); , но это не работает, и в общем случае - строка не содержит обратную косую черту, это проблема отображения (и мой запрос http (post), который я пытаюсь сделать) – user3569530

+0

@rakeshkr no, пожалуйста, не используйте replaceAll, попробуйте понять, что не так –

+0

sonObject.addProperty ("test", exampleList) - в этом случае мне нужно значение строки this backslahes – user3569530

ответ

4

Вы хотите добавить отображение ключ-значение String -> String, поэтому кавычки экранированы (на самом деле ваше значение является строковым представлением списка задается toString() способ). Если вам требуется сопоставление String -> Array, вам необходимо преобразовать список как JsonArray и добавить его как собственность.

jsonObject.add("test", gson.toJsonTree(exampleList, new TypeToken<List<String>>(){}.getType())); 
1

Не смешивать Gson и JSONObject,

1), если вам нужно { "тест": [ "ааа", "БББ", "ссс"]} с помощью 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), если вам нужно { "тест": [ "ааа", "БББ", "ссс"]} с помощью 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 («тест», текст) не разрешается добавлять текст в формате JSON и убежали ВСЕГДА этот текст.

Смежные вопросы