Javascript 从JSON捕获不带键的数据

Javascript 从JSON捕获不带键的数据,javascript,html,json,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

我的问题是,如果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模式,但假设它是一个电子邮件列表,我会尝试以下方法:

$.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;
});
$.getJSON(“http://10.21.26.251:8080/Transport/getMessage?user=1,函数(数据){
var输出=”;
对于(变量i=0;i--”
+数据[i].userFrom.userId
+“--
” +数据[i].messageContent +“

”; } 输出+=“”; document.getElementById(“占位符”).innerHTML=输出; });
如果我理解了您的意图,那么您基本上希望在不知道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;
var输出=”;

对于(var i=0;iI没有看到任何
item
键,所以问题就在这里?JSON.stringify你得到了什么?console.log?你想做什么?这就是问题所在,item不在那里!我需要在没有键的情况下引用它Hi,感谢它没有工作仍然没有脚本的任何输出它可能不是数组,尝试去掉for循环,然后使用data.messageide即使没有for循环,它甚至在json文件中找不到一个数据字段。谢谢,脚本仍然没有输出任何内容。问题:您的json是在方括号之间(类似于
[{“messageId”:“something”,…},{…},{…},{…}]
)还是仅仅是一系列
{},{},…
正如您之前发布的那样?介于[]之间是的,很抱歉,我在处理问题时遗漏了这一部分。我刚刚更新了我的答案,我忘记了
$的右括号。each()
函数。你能试试吗?嗯,不,那不是我在尝试时添加的!它在保存和工作时似乎读取完全相同的文件,但在从服务器获取时遇到问题
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;