0

私の問題は、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...
4

2 に答える 2

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;
});
于 2013-03-11T10:59:41.347 に答える
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;
于 2013-03-11T11:03:35.723 に答える