如何获得二级Json值



我试图在响应中迭代第二级json值。

这是Json的一个示例:

  {
  "Links": {},
 "Items": [
  {
  "WebId": "A0EUfSms148rEStZ8_fh",
  "Name": "AA to Slurry ",
  "Path": "klj",
  "Links": {
    "Source": ""
  },
  "Items": [
    {
      "Timestamp": "2016-08-21T05:14:27.0180053Z",
      "Value": 0.0154830571,
      "UnitsAbbreviation": "%",
      "Good": true,
      "Questionable": false,
      "Substituted": false
    },
    {
      "Timestamp": "2016-08-21T05:14:30Z",
      "Value": 0.0155982981,
      "UnitsAbbreviation": "%",
      "Good": true,
      "Questionable": false,
      "Substituted": false
    },
    {
      "Timestamp": "2016-08-21T05:14:30Z",
      "Value": 0.0155982981,
      "UnitsAbbreviation": "%",
      "Good": true,
      "Questionable": false,
      "Substituted": false
    },
    {
      "Timestamp": "2016-08-21T05:14:33.024002Z",
      "Value": 0.0155704552,
      "UnitsAbbreviation": "%",

  "Items": [
{
  "WebId": "A0EUfSms148rEStZ8_fh",
  "Name": “Slurry ",
  "Path": "klj",
  "Links": {
    "Source": ""
  },
  "Items": [
    {
      "Timestamp": "2016-08-21T05:14:27.0180053Z",
      "Value": 0.0154830571,
      "UnitsAbbreviation": "%",
      "Good": true,
      "Questionable": false,
      "Substituted": false
    },
    {
      "Timestamp": "2016-08-21T05:14:30Z",
      "Value": 0.0155982981,
      "UnitsAbbreviation": "%",
      "Good": true,
      "Questionable": false,
      "Substituted": false
    },
    {
      "Timestamp": "2016-08-21T05:14:30Z",
      "Value": 0.0155982981,
      "UnitsAbbreviation": "%",
      "Good": true,
      "Questionable": false,
      "Substituted": false
    },
    {
      "Timestamp": "2016-08-21T05:14:33.024002Z",
      "Value": 0.0155704552,
      "UnitsAbbreviation": "%",

这是我目前只返回名称的代码:

  var feat = resp.Items,
        tableData = [];
    // Iterate over the JSON object
    for (var i = 0, len = feat.length; i < len; i++) {
        tableData.push({
            "name": feat[i].Name,
            "Timestamp": feat[i].Timestamp,
            "value": feat[i].Items.Value,
        });
    }

在这个例子中tabledata应该是这样的

name        | Timestamp | value
AA to Slurry  
AA to Slurry
AA to Slurry
AA to Slurry
AA to Slurry
AA to Slurry 
Slurry 
Slurry
Slurry
Slurry
Slurry
Slurry

具有对应的时间戳和第二层"Items"中的值。现在我得到的只是名称值如何得到名称然后遍历第二级项目呢?

我认为你的问题是你的子项目数组被直接访问。(feat[i].Items.Value)相反,你也应该循环遍历第二个数组。我把这段代码放在一起让你开始,它循环遍历json中的项,然后循环遍历第一个数组中的每个项。

json.Items.forEach(function(item){
  item.Items.forEach(function(subItem){
    tableData.push({
      'name':item.Name,
      'timestamp':item.TimeStamp,
      'value':subItem.Value
    });
  });
});

最新更新