在javascript中解析JSON响应

时间:2013-07-18 20:30:45

标签: javascript json parsing

这是我问题的本质: 有必要列出所有“文件”:

{
    "results": [{
        "fromuserid": "Anonymous",
        "touserid": "sd68Kbmc02",
        "file": "943easd709bfb2f6",
        "subject": "test",
        "message": "ddd",
        "createdAt": "2013-07-18T20:16:08.023Z",
        "updatedAt": "2013-07-18T20:16:08.023Z",
        "objectId": "bRDvHb4X4M"
    }, {
        "fromuserid": "Anonymous",
        "touserid": "sd68Kbmc02",
        "file": "ef763asd134a8125",
        "subject": "test",
        "message": "ddd",
        "createdAt": "2013-07-18T20:13:56.997Z",
        "updatedAt": "2013-07-18T20:13:56.997Z",
        "objectId": "GaLWnbSFtg"
    }, {
        "fromuserid": "Anonymous",
        "touserid": "sd68Kbmc02",
        "file": "5e7ae0sd5f1b48d0",
        "subject": "etesrtes",
        "message": "dfv fv f",
        "createdAt": "2013-07-18T16:09:20.403Z",
        "updatedAt": "2013-07-18T16:09:20.403Z",
        "objectId": "X83Qd7ctwi"
    }]
}

我用:

$.getJSON("http://domain.me/user/show_user/name/?callback=?", function(data) {
    $('#tile').html("<a href='http://domain.me/?img=" + data['results'][0]['file'] + "' target='_blank'><img src='http://domain.me/" + data['results'][0]['file'] + ".jpg'/></a>");
});

我得到一行。 您想要显示所有行数据['结果'] [0] ['文件']

2 个答案:

答案 0 :(得分:1)

$.getJSON("http://domain.me/user/show_user/name/?callback=?",
    function(data) 
        {
          var results = [];
          $.each(data['results'], function(i, result) {
            results.push("<a href='http://domain.me/?img=" + result['file'] + "' target='_blank'><img src='http://domain.me/" + result['file'] + ".jpg'/></a>");
          });
          $('#tile').html(results.join(""));
        }
);

答案 1 :(得分:0)

你必须解析并遍历已解析的JSON数据的元素,这可以通过Array.map()轻松完成(所有浏览器都支持它,但IE&lt; 9):

$.getJSON("http://domain.me/user/show_user/name/?callback=?", function(data) {
    var html = data.results.map(function(item, index, array) {
        return array[index].file;
    });
    $('#tile').html(html.join(", "));
});