将JSON字符串转换为JavaScript对象,然后创建一个HTML表

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

本文关键字:一个 HTML 创建 然后 转换 字符串 JSON JavaScript 对象      更新时间:2023-10-19

我需要一些JSON字符串操作方面的帮助。我想做的是将JSON字符串转换为JavaScript对象,并使HTML文件如下所示。我做的第一件事是使用var obj=JSON.parse(jsonstring)将JSON字符串放入JavaScript对象。之后,我希望使用for循环遍历JavaScript对象中的所有属性,然后使用值来创建表。但是,我无法通过使用.name获取vote、name、racegender//strong>等的名称,而不是其值。回路控制也出现故障.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" ]

Fiddle