我真的很讨厌这样做,但我有两个问题: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。
答案 0 :(得分:1)
您是否需要将Json响应映射到类中?
如果不是,您可以获得所需的值,例如: preview_url
您可以使用readTree
将json
结果映射到节点树中。
您可以使用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"));
}