在没有密钥的情况下从JSON捕获数据

时间:2013-03-11 10:26:45

标签: javascript html json

我的问题是,我无法打印出从服务器收到的内容,而在JSON文件的开头没有密钥,这是我当前的代码......

    $.getJSON("http://10.21.26.251:8080/Transport/getMessage?user=1", function(data) {
    var output = "<tr>"; 
    for ( var i in data.item) {
    output += "<td>"
    + "-- "
    + data.item[i].messageId
    + " --<br>-- "
    + data.item[i].userId
    + " --<br>"
    + data.item[i].messageContent
    + "<br></br></td>";
    }
    output += "</tr>";
    document.getElementById("placeholder").innerHTML = output;
    });

但这依赖于收到的具有项目名称的代码,当前的JSON收到了这样的...我无法控制收到的内容

    {
    "messageId": "d1e5afa5-5153-49b7-ae73-3501fbed1b68",
    "userTo": {
    "userId": 1,
    "userName": "COE",
    "userLastCheckedDate": 1362994638139
    },
    "userFrom": {
    "userId": 2,
    "userName": "Man",
    "userLastCheckedDate": 1362994638139
    }
    etc...

2 个答案:

答案 0 :(得分:0)

很难用这么小的样本来了解json架构,但假设它是一个电子邮件列表,我会试试这个:

$.getJSON("http://10.21.26.251:8080/Transport/getMessage?user=1", function(data) {
var output = "<tr>"; 
for ( var i = 0; i < data.length;i++) {
output += "<td>"
+ "-- "
+ data[i].messageId
+ " --<br>-- "
+ data[i].userFrom.userId
+ " --<br>"
+ data[i].messageContent
+ "<br></br></td>";
}
output += "</tr>";
document.getElementById("placeholder").innerHTML = output;
});

答案 1 :(得分:0)

如果我理解你要做的事情,你基本上想要在不知道他们的名字的情况下遍历JSON对象属性。另外(如果我错了,请纠正我),你的对象似乎是一个对象数组。 你可以这样做:

var output = "<tr>";

for (var i=0; i<data.length; i++) { // Loop through the main array of objects

    output += "<td>";

    $.each(data[i], function(key, val) { // Loop through the properties of the current object
        output += "-- "
            + val
            + " --<br>";
    });

    output += "</br></td>";
}
output += "</tr>";
document.getElementById("placeholder").innerHTML = output;