Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问嵌套的JSON对象_Javascript_Json - Fatal编程技术网

Javascript 如何访问嵌套的JSON对象

Javascript 如何访问嵌套的JSON对象,javascript,json,Javascript,Json,我想通过迭代访问嵌套的JSON对象值 我尝试了console.logtest[0]。发票[0]。成本。否[0];但它不起作用 var测试=[{ 发票:{ 编号:869, $$hashKey:对象:186 }, 费用:[{ 编号:183, 新界北:100 }, { 编号:184, 新界北:200 }] }, { 发票:{ 编号:698,, $$hashKey:对象:189 }, 费用:[{ 编号:110,, 新界北:150 }, { 编号:142,, 新界北:263 }] }]; console

我想通过迭代访问嵌套的JSON对象值

我尝试了console.logtest[0]。发票[0]。成本。否[0];但它不起作用

var测试=[{ 发票:{ 编号:869, $$hashKey:对象:186 }, 费用:[{ 编号:183, 新界北:100 }, { 编号:184, 新界北:200 }] }, { 发票:{ 编号:698,, $$hashKey:对象:189 }, 费用:[{ 编号:110,, 新界北:150 }, { 编号:142,, 新界北:263 }] }]; console.logtest[0]。发票[0]。成本。编号[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.logtest[0]。成本[0]。否; 就183岁了

如果您不习惯JSON,可以在开发中使用console.logtest检查您的结构

要进行迭代,应使用如下所述的循环:

简短示例:

 var myFunction = function(item,index){
    console.log(item.Cost[0].No);
 }
 test.forEach(myFunction)
您的代码控制台。日志测试[0]。发票[0]。成本。编号[0];不行

因为发票和成本是同一级别的对象,所以成本不嵌套在发票中

检查下面的示例,了解如何访问它们

你需要理解和理解

var测试=[{ 发票:{ 编号:869, $$hashKey:对象:186 }, 费用:[{ 编号:183, 新界北:100 }, { 编号:184, 新界北:200 }] }, { 发票:{ 编号:698,, $$hashKey:对象:189 }, 费用:[{ 编号:110,, 新界北:150 }, { 编号:142,, 新界北:263 }] }]; //获取成本 console.logtest[0]。成本[0]。否; //访问发票 console.logtest[0]。Invoice.NO test是一个数组,因此需要对其进行迭代

每次迭代都会给您一个具有两个属性的对象:发票和成本

发票也是一个对象,因此您只需要访问所需的属性

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

var测试=[{ 发票:{ 编号:869, $$hashKey:对象:186 }, 费用:[{ 编号:183, 新界北:100 }, { 编号:184, 新界北:200 }] }, { 发票:{ 编号:698,, $$hashKey:对象:189 }, 费用:[{ 编号:110,, 新界北:150 }, { 编号:142,, 新界北:263 }] }]; test.forEacht=>{ console.logInvoice N°:+t.Invoice.NO; t、 Cost.forEachc=>{ console.log-成本N°:+c.NO+-金额:+c.Amnt; };
}; 你写错了陈述

测试[0]。发票[0]。成本。编号[0]

它应该如下所示

 test[0].Cost[0].NO
因为发票和成本是同一个json对象的属性

试试这个

var测试=[{发票:{NO:869,$$hashKey:object:186},成本:[{NO:183,Amnt:100},{NO:184,Amnt:200}},{发票:{NO:698,$$hashKey:object:189},成本:[{NO:110,Amnt:150},{NO:142,Amnt:263}]; console.logtest[0]。成本[0]; console.logtest[0]。成本[0]。否;
我试过这个。console.logtest[0]。发票[0]。成本。编号[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);
            }
        }