使用jQuery解析javascript中的JSON

使用jQuery解析javascript中的JSON,javascript,jquery,json,Javascript,Jquery,Json,我正为这件事大发雷霆。我使用jQuery.getJSON()方法从服务器获取响应。这是一个示例响应: { "playlist": { "track": { "song": "Wake me up", "albumart": "http://example.com/image.png", "videoid": "CDsKBof4iMA" } } } 响应中将有多个曲目,但只有一个播放列表。我通过以下方式请

我正为这件事大发雷霆。我使用jQuery.getJSON()方法从服务器获取响应。这是一个示例响应:

{
  "playlist": {
      "track": {
          "song": "Wake me up",
          "albumart": "http://example.com/image.png",
          "videoid": "CDsKBof4iMA"
      }
  }
}
响应中将有多个曲目,但只有一个播放列表。我通过以下方式请求:

$.getJSON("api/playlist/get.php", {artist: "artist+name" })
如何解析此数据?

使用
$.parseJSON()
获取JSON的JavaScript对象。 试试这个:

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


在这种情况下,如果JSON加载成功,
success(data,textStatus,jqXHR)
是回调函数

{

    "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"
        }
    }
}
$.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)
    }

})
更新: 此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"
        }]
    }
}
然后,您将能够从传递的数组中获取每个
轨迹
对象:

您应该像这样使用
$.getJSON
函数:

{

    "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"
        }
    }
}
$.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)
    }

})

下面是JSFIDLE:您需要在getJSON调用中添加一个成功函数。JSON字符串将解析为一个对象,然后您可以像访问任何其他JS对象一样访问该对象的属性。getJSON的jquery api有一个例子:如果使用getJSON,则不需要使用parseJSON,因为它在success函数中返回一个对象line@JamesWalker我刚刚更新了我的帖子。由于JSON响应的格式无效,您将得到未定义的
。它有多个具有相同属性名称的对象。若您能够从服务器更改JSON发送者文件,那个么请将其更改为正确的格式,如建议的那个样:将对象放入数组中。非常感谢!我从未想过JSON响应可能是错误的。