我正在为这个而烦恼。我正在使用 jQuery.getJSON() 方法从服务器获取响应。这是一个示例响应:
{
"playlist": {
"track": {
"song": "Wake me up",
"albumart": "http://example.com/image.png",
"videoid": "CDsKBof4iMA"
}
}
}
响应中会有不止一首轨道,但只有一个播放列表。我要求使用以下内容:
$.getJSON("api/playlist/get.php", {artist: "artist+name" })
我该如何解析这些数据?
最佳答案
假设您的 JSON 结果是这样的:
{
"playlist": {
"track": {
"song": "Wake me up",
"albumart": "http://example.com/image.png",
"videoid": "CDsKBof4iMA"
},
"track": {
"song": "Wake me up 2",
"albumart": "http://example.com/image2.png",
"videoid": "CDsKBof4iMA2"
},
"track": {
"song": "Wake me up 3",
"albumart": "http://example.com/image3.png",
"videoid": "CDsKBof4iMA3"
}
}
}
更新:
此 json 格式无效,因为它有多个具有相同属性名称的子对象。 如果可以,请将服务器的响应更改为以下格式:
{
playlist: {
tracks: [{
"song": "Wake me up",
"albumart": "http://example.com/image.png",
"videoid": "CDsKBof4iMA"
}, {
"song": "Wake me up 2",
"albumart": "http://example.com/image2.png",
"videoid": "CDsKBof4iMA2"
}, {
"song": "Wake me up 3",
"albumart": "http://example.com/image3.png",
"videoid": "CDsKBof4iMA3"
}]
}
}
然后您将能够从传递的数组中获取每个 track
对象:
你应该像这样使用你的$.getJSON
函数:
$.getJSON("api/playlist/get.php", function (data) {
for (var key in myObj.playlist.tracks) {
//do something with your track object
console.log(myObj.playlist.tracks[key].song)
}
})
这是给你的 JsFiddle:http://jsfiddle.net/zur4ik/Fy6ud/1/
关于javascript - 使用 jQuery 在 javascript 中解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19640474/