2015-11-12 4 views
2

Я использую gson, чтобы взять List в String. Как это:About Turn List <String> to String С GSON

Gson gson = new Gson(); 
String youtubeListStr = gson.toJson(List<String> strList); 

А затем получить это следующим образом:

Gson gson = new Gson(); 
Type type = new TypeToken<List<String>>() {}.getType(); 
List<String> youtube_List = gson.fromJson(youtubeListStr, type); 
for(String url : youtube_List){ 
    println(url); 
} 

Но я получаю результаты:

{"value":"https:\/\/www.youtube.com\/embed\/mGBaWXelaM0"} 

Как получить правильный URL?

https:\\www.youtube.com\embed\mGBaWXelaM0 

Я хочу распечатать, как указано выше.

+0

Я только что проверил ваш код: все напечатано в порядке, как вы хотите. Похоже, простая проблема с вашим недоразумением. – Andremoniy

+1

BTW 'https: \\ www.youtube.com \ embed \ mGBaWXelaM0' - неверный URL. Это должно быть: 'https: // www.youtube.com/embed/mGBaWXelaM0' – Andremoniy

ответ

1

Это правильный URI, он просто имеет escape characters\.

Если вы хотите, чтобы значение печаталось, а не вся строка json, вам нужно проанализировать строку json с помощью Gson и извлечь нужную вам часть.

JsonElement element = new JsonParser().parse(url); 
JsonObject object = element.getAsJsonObject(); 
JsonElement serviceElement = object.get("value"); 
+0

Я думаю, что OP означает, что он хочет напечатать' https: \\ www.youtube.com \ embed \ mGBaWXelaM0' в отличие от ' {"value": "https: \/\/www.youtube.com \/embed \/mGBaWXelaM0"} ' – npinti

+0

да, @npinti прав, извините, мой плохой английский. – WhiteBanana

1

Не волнуйтесь, все в порядке: json как xml имеет множество уцелевших символов, один из них является \. Итак, когда вы будете читать значения из этого json, это будет corrent-url в формате, который вам нужен.

UPD-2: BTW https:\\www.youtube.com\embed\mGBaWXelaM0 - неверный адрес URL. Оно должно быть: https://www.youtube.com/embed/mGBaWXelaM0 UPD:

полный код:

List<String> strList = Arrays.asList("https://www.youtube.com/embed/mGBaWXelaM0", "https://www.youtube.com/embed/mGBaWXelaM0"); 
    Gson gson = new Gson(); 
    String youtubeListStr = gson.toJson(strList); 
    System.out.println(youtubeListStr); 

    Type type = new TypeToken<List<String>>() {}.getType(); 
    List<String> youtube_List = gson.fromJson(youtubeListStr, type); 
    for(String url : youtube_List){ 
     System.out.println(url); 
    } 

Будет распечатай:

["https://www.youtube.com/embed/mGBaWXelaM0","https://www.youtube.com/embed/mGBaWXelaM0"] 
https://www.youtube.com/embed/mGBaWXelaM0 
https://www.youtube.com/embed/mGBaWXelaM0 

Так что все правильно.