杰克逊用java解析

时间:2016-03-23 20:56:13

标签: java json jackson

我真的很讨厌这样做,但我有两个问题:Jackson 2.7.3可以解析以下网址吗?我可以解析JSON的每一部分吗?

以下是我目前使用的代码:

public class Song {
private String tracks;
private String album;
private String images;

public void setTracks(String tracks){
    this.tracks=tracks;
}
public void setAlbum(String album){
   this.album= album;
}
public void setImages (String images){
    this.images= images;
}
}

并且

 Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                ObjectMapper mapper = new ObjectMapper();
                Document doc = Jsoup.connect("http://api.spotify.com/v1/search?q=track:" + finalSong + "%20artist:" + finalArtist+"%20" + "&type=track").ignoreContentType(true).get();
                String title = String.valueOf(doc.body().text());

                Song obj = mapper.readValue(String.valueOf(title), Song.class);

            } catch (JsonGenerationException e) {
                e.printStackTrace();
            } catch (JsonMappingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
    thread.start();

  return null;
}

我需要的只是" preview_url"和其他一个"图像"顶部的url JSON位于https://api.spotify.com/v1/search?q=track:Ready%20To%20Fall%20artist:rise%20against%20&type=track

1 个答案:

答案 0 :(得分:1)

您是否需要将Json响应映射到类中?

如果不是,您可以获得所需的值,例如: preview_url

您可以使用readTreejson结果映射到节点树中。

您可以使用findPath搜索您要查找的媒体资源。

image的情况下,它包含一个数组。因此,如果您想从该列表中选择特定项目,可以使用get选择所需的特定项目。

示例

JsonNode readTree = mapper.readTree(body);

for (JsonNode node : readTree.findPath("items")) {
    System.out.println(node.findPath("images").get(2));
    System.out.println(node.findPath("preview_url"));
}