关于使用GSON将列表<string>转换为字符串

时间:2015-11-12 08:54:15

标签: java gson

我使用gson将List带入String。像这样:

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"}

如何获取正确的网址?

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

我想像上面的结果一样打印。

2 个答案:

答案 0 :(得分:2)

别担心,一切正常:json xml有一组转义字符,其中一个是\。因此,当您将从此json读取值时,它将是所需格式的相关网址。

UPD-2 :BTW https:\\www.youtube.com\embed\mGBaWXelaM0 - 网址不正确。它应该是: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

所以一切都是正确的。

答案 1 :(得分:1)

这是正确的URI,它只有escape characters \

如果你想要打印值而不是整个json字符串,那么你需要用Gson解析json行并提取你想要的部分。

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