使用JS解析JSON foreach,显示HTML列表

Leo*_*iel 5 html javascript jquery json

我目前正在尝试使用JavaScript解析JSON.我的问题是我希望输出看起来像这样:

<li>AppName1</li>
<li>AppName2</li>
<!-- and so on... -->
Run Code Online (Sandbox Code Playgroud)

然而它只是不起作用,我不知道如何实现这一点.这是从JSON响应反序列化的对象:

{
  "data": [{
    "AppId": 1,
    "AppName": "AppName1",
    "AppSize": "2.1"
  }, {
    "AppId": 2,
    "AppName": "AppName2",
    "AppSize": ""
  }]
}
Run Code Online (Sandbox Code Playgroud)

这是我的.js文件:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var myObj = JSON.parse(this.responseText);
    document.getElementById("test").innerHTML = myObj.AppName;
  }
};
xmlhttp.open("GET", "json.json", true);
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)

这是在我的HTML文件中

<p id="test"></p>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,因为我似乎无法理解这一点.非常感谢!

Ror*_*san 2

首先请注意,您只能将li元素作为<ul>或的子元素<ol>,因此p需要更改该元素。

AppName属性是 内对象的一部分data,因此您需要循环遍历它们:

myObj.data.forEach(function(o) {
   document.getElementById("test").innerHTML += '<li>' + o.AppName + '</li>';
}
Run Code Online (Sandbox Code Playgroud)

或者通过索引单独访问它们:

document.getElementById("test").innerHTML = '<li>' + myObj.data[0].AppName + '</li>'; // first item only
Run Code Online (Sandbox Code Playgroud)

myObj.data.forEach(function(o) {
   document.getElementById("test").innerHTML += '<li>' + o.AppName + '</li>';
}
Run Code Online (Sandbox Code Playgroud)
document.getElementById("test").innerHTML = '<li>' + myObj.data[0].AppName + '</li>'; // first item only
Run Code Online (Sandbox Code Playgroud)