使用 jQuery 解析 JavaScript 中的 JSON

Parsing JSON in javascript using jQuery

本文关键字:中的 JSON JavaScript 解析 jQuery 使用      更新时间:2023-09-26

我正在为此拔头发。我正在使用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/

试试这个:

$.getJSON("api/playlist/get.php", function(data) {
    var responseObject = JSON.parse(data);
    // do stuff with responseObject
});

使用 $.parseJSON() 获取 JSON 的 JavaScript 对象。http://api.jquery.com/jQuery.parseJSON/

根据文档,

 jQuery.getJSON( url [, data ] [, success( data, textStatus, jqXHR ) ] )

在这种情况下,success( data, textStatus, jqXHR )是 JSON 加载成功时的回调