result_array = [{"status":{"A1":{"1":{"test1":"111","test2":"*9999","test3":"99","test4":"124"}},"B1":{"1":{"test1":"2222","test2":"koko","test3":"10","test4":"69"}}}}]
という配列があってこれを
<table boder=1>
<tr>
<td>test1</td><td>test2</td><td>test3</td><td>test4</td>
<tr>
</tr>
<td>111</td><td>*9999</td><td>99</td><td>124</td>
<tr>
</tr>
<td>2222</td><td>koko</td><td>10</td><td>69</td>
<tr>
</tr>
</table>
という形にするにはどうしたらいいのでしょうか?
対象ブラウザはIE、FIREFOXです。
とりあえず、必要な値だけで取得して作成してみました。
IE6,FF2 for win で確認していますが、なんら保障するものではありません・・・。
JSON オブジェクトをテーブルを表示するのに分かりやすいデータ構造に変更して、出力するのが分かりやすいと思います。
<script>
var result_array = [{"status":{"A1":{"1":{"test1":"111","test2":"*9999","test3":"99","test4":"124"}},"B1":{"1":{"test1":"2222","test2":"koko","test3":"10","test4":"69"}}}}];
var headers = {};
var lines = new Array();
for(var i=0;i<result_array.length;i++){
var m1 = result_array[i];
for(var status in m1){
var m2 = m1[status];
for(var cell in m2){
var m3 = m2[cell];
for(var no in m3){
var m4 = m3[no];
lines.push(m4);
for(var header in m4){
headers[header] = true;
}
}
}
}
}
var strTable = "";
var strHeader = "";
var strRows = "";
for(var header in headers){
strHeader += "<td>" + header + "</td>";
}
strHeader = "<tr>\n" + strHeader + "\n</tr>\n";
for(var i=0;i<lines.length;i++){
var strRow = "";
for(var header in headers){
strRow += "<td>" + lines[i][header] + "</td>";
}
strRows += "<tr>\n" + strRow + "\n</tr>\n";
}
strTable = '<table border="1">\n' + strHeader + strRows + '</table>';
document.write(strTable);
alert(strTable);
</script>
現在:
var result_array = [{"status":{"A1":{"1":{"test1":"111","test2":"*9999","test3":"99","test4":"124"}},"B1":{"1":{"test1":"2222","test2":"koko","test3":"10","test4":"69"}}}}];
変更後:
var result_array = [{"A1":{"1":{"test1":"111","test2":"*9999","test3":"99","test4":"124"}},"B1":{"1":{"test1":"2222","test2":"koko","test3":"10","test4":"69"}}}];
result_array[0] = {"status": result_array[0]};
ではダメですか?
for(var i=0;i<result_array.length;i++){
var m2 = result_array[i];
for(var cell in m2){
var m3 = m2[cell];
for(var no in m3){
var m4 = m3[no];
lines.push(m4);
for(var header in m4){
headers[header] = true;
}
}
}
}
※ コメント欄に、半角スペースを記入するには・・・ ではダメなんですね。