如何访问嵌套的JSON对象

时间:2017-03-30 11:34:15

标签: javascript json

我希望通过迭代来访问嵌套的JSON对象值。

我尝试了console.log(test[0].Invoice[0].Cost.NO[0]);,但它无效。



var test = [{
  "Invoice": {
    "NO": "869",
    "$$hashKey": "object:186"
  },
  "Cost": [{
    "NO": 183,
    "Amnt": 100
  }, {
    "NO": 184,
    "Amnt": 200
  }]
}, {
  "Invoice": {
    "NO": "698",
    "$$hashKey": "object:189"
  },
  "Cost": [{
    "NO": 110,
    "Amnt": 150
  }, {
    "NO": 142,
    "Amnt": 263
  }]
}];

console.log(test[0].Invoice[0].Cost.NO[0]);




5 个答案:

答案 0 :(得分:1)

您的代码console.log(test[0].Invoice[0].Cost.NO[0]);无效。

由于InvoiceCost是同一级别对象(Cost未嵌套在Invoice)。

请查看下面有关如何访问它们的示例。

您需要了解Arrays []Objects {}

var test = [{
  "Invoice": {
    "NO": "869",
    "$$hashKey": "object:186"
  },
  "Cost": [{
    "NO": 183,
    "Amnt": 100
  }, {
    "NO": 184,
    "Amnt": 200
  }]
}, {
  "Invoice": {
    "NO": "698",
    "$$hashKey": "object:189"
  },
  "Cost": [{
    "NO": 110,
    "Amnt": 150
  }, {
    "NO": 142,
    "Amnt": 263
  }]
}];

// To access COST
console.log(test[0].Cost[0].NO);

// To access Invoice
console.log(test[0].Invoice.NO);

答案 1 :(得分:0)

这是你的JSON:

var test = [{
  "Invoice": {
    "NO": "869"
  },
  "Cost": [{
    "NO": 183,
    "Amnt": 100
  }, {
    "NO": 184,
    "Amnt": 200
  }]
}, {
  "Invoice": {
    "NO": "698"
  },
  "Cost": [{
    "NO": 110,
    "Amnt": 150
  }, {
    "NO": 142,
    "Amnt": 263
  }]
}];

console.log(test[0].Cost[0].NO); 将是183

如果您不习惯JSON,可以使用console.log(test)检查开发中的结构。

要进行迭代,您应该使用此处所述的循环:https://www.w3schools.com/jsref/jsref_forEach.asp

简短的例子:

 var myFunction = function(item,index){
    console.log(item.Cost[0].No);
 }
 test.forEach(myFunction)

答案 2 :(得分:0)

test是一个数组,因此您需要迭代它。

每次迭代都会为您提供一个包含2个属性的对象:InvoiceCost

Invoice又是一个对象,因此您只需要访问所需的属性

Cost是一个数组,因此您需要迭代每个作为对象的项

var test = [{
  "Invoice": {
    "NO": "869",
    "$$hashKey": "object:186"
  },
  "Cost": [{
    "NO": 183,
    "Amnt": 100
  }, {
    "NO": 184,
    "Amnt": 200
  }]
}, {
  "Invoice": {
    "NO": "698",
    "$$hashKey": "object:189"
  },
  "Cost": [{
    "NO": 110,
    "Amnt": 150
  }, {
    "NO": 142,
    "Amnt": 263
  }]
}];

test.forEach(t=>{
  console.log("Invoice N°: " + t.Invoice.NO);
  t.Cost.forEach(c=>{
    console.log("- Cost N°: "+ c.NO + " - Amount: " + c.Amnt);
  });
});

答案 3 :(得分:0)

你写了错误的陈述

test[0].Invoice[0].Cost.NO[0]

应如下所示

 test[0].Cost[0].NO

因为Invoice和Cost是同一json对象的属性。

试试这个



  var test = [{ "Invoice": { "NO": "869", "$$hashKey": "object:186" }, "Cost": [{ "NO": 183, "Amnt": 100 }, { "NO": 184, "Amnt": 200 }] }, { "Invoice": { "NO": "698", "$$hashKey": "object:189" }, "Cost": [{ "NO": 110, "Amnt": 150 }, { "NO": 142, "Amnt": 263 }] }];
 

  console.log(test[0].Cost[0]);
 console.log(test[0].Cost[0].NO);
   

 




答案 4 :(得分:0)

 var test = [{ "Invoice": { "NO": "869", "$$hashKey": "object:186" }, "Cost": [{ "NO": 183, "Amnt": 100 }, { "NO": 184, "Amnt": 200 }] }, { "Invoice": { "NO": "698", "$$hashKey": "object:189" }, "Cost": [{ "NO": 110, "Amnt": 150 }, { "NO": 142, "Amnt": 263 }] }];
        for (var t in test)
        {
            var obj = test[t];
            console.log(obj.Invoice.NO);
            console.log(obj.Invoice.$$hashKey);
            for ( var cst in obj.Cost)
            {
                console.log("Cost Value: " + obj.Cost[cst].NO + " " + obj.Cost[cst].Amnt);
            }
        }