簡體   English   中英

將 JSON 字符串轉換為 JavaScript 對象,然后創建一個 HTML 表

[英]convert the JSON string to a JavaScript object then create a HTML table

我需要一些有關 JSON 字符串操作的幫助。 我想做的是將 JSON 字符串轉換為 JavaScript 對象並使 HTML 文件如下所示。 我做的第一件事是使用var obj = JSON.parse ( jsonstring ); 將 JSON 字符串放入 JavaScript 對象。 之后,我希望使用 for 循環遍歷 JavaScript 對象中的所有屬性,然后使用該值創建表。 但是,我無法通過使用.name獲取投票、姓名、種族性別名稱而不是其值。 回路控制也出現故障。 .length總是返回一些未定義的錯誤。 如果您能提供任何幫助,我將不勝感激。 期待您的回音。

哪個角色最好看?

角色:星球大戰角色

記錄編號:2

感官:在此處輸入圖像描述


| 投票 | 姓名 | 種族| 性別 |


| 34411224 | 歐比旺·克諾比 | 人類 | 男 |


| 34458794 | 阿納金天行者 | 人類 | 男 |


在此處輸入代碼

 var obj = JSON.parse ( jsonstring ); var labelsName = obj.labels[0]; var sensesName = obj.senses[0]; createTable(obj) function createTable(obj) { var table = document.createElement("table"); table.setAttribute("width","100%"); table.setAttribute("border","1"); table.borderColor="#FFFFFF"; table.cellSpacing="0"; table.cellpadding="0"; table.borderColorDark="#FFFFFF"; table.borderColorLight="#AAAAAA"; parentTd = document.getElementById("parentTd"); //console.log(" parentTd=", parentTd); parentTd.appendChild(table); var header = table.createTHead(); header.bgColor="#EEEEEE"; var headerrow = header.insertRow(0); headerrow.height="27"; var labels = var.getElementsByTagName("labels"); var senses = var.getElementsByTagName("senses"); for( var i = 0; i < obj.length; i++ ) { var rowObj = obj[i]; for( var key in rowObj){ console.log(" key =: ", key); console.log(" rowObj[key] =: ", rowObj[key]); } }
 <html> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> <meta content="utf-8" http-equiv="encoding"> <body> <h1>Which Character Is The Best?</h1> <div valign="top" id="parentTd">&nbsp;</div> <script> var jsonstring = ' { "labels": [ ' + '{ "Characters": "StarWarsCharacters", "Record No.": 2, '+ ' "Senses": [ { "vote": 34411224, "name": "Obi-Wan Kenobi", "race": "Human", "gender": "Male"}, ' + ' { "vote": 34458794, "name": "Anakin Skywalker", "race": "Human", "gender": "Male"} ] } ] }' </script> </body> </html>

這是您可以執行的操作的示例:

for (var i = 0; i < json.labels.length; i++){
    for (var j = 0; j < json.labels[i].Senses.length; j++){
        document.getElementById('table').innerHTML += 
               '<tr><td>' + json.labels[i].Senses[j].gender + 
               '</td><td>' + json.labels[i].Senses[j].name + 
               '</td><td>' + json.labels[i].Senses[j].race + 
               '</td><td>'+ json.labels[i].Senses[j].vote + 
               '</td></tr>';   
   }    
}

也許您可以嘗試使用以下方法動態添加標題:

console.log(Object.keys(json.labels[0].Senses[0])); 

它返回一個數組:

[ "vote", "name", "race", "gender" ]

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM