-1

我正在尝试productTitle按以下顺序访问 JSON 的嵌套属性,但是,只能设法使用

JSON.stringify(orders[i].cart.items, null, 4);

我尝试了嵌套循环,但无济于事。我也试过

JSON.stringify(orders[i].cart.items.item, null, 4);

这也行不通。缺少一些基本的东西,我花了几个小时浏览 JSON 文档和教程,但找不到具体的帮助。

[
  {
    "_id": "5ea5115224bf1f569c4fac96",
    "user": "5ea19f4160539d264ca1e7c5",
    "cart": {
      "items": {
        "5e92b488fc3e326b70be262d": {
          "item": {
            "_id": "5e92b488fc3e326b70be262d",
            "productCode": "PROD002",
            "productType": "Duvet",
            "productTitle": "Kingsize Duvet",
            "__v": 0
          },
          "qty": 1,
          "price": 3
        },
        "5e92f5f9213dc863e0e97682": {
          "item": {
            "_id": "5e92f5f9213dc863e0e97682",
            "productCode": "PROD006",
            "productType": "Duvet",
            "productTitle": "double-Duvet",
            "__v": 0
          },
          "qty": 2,
          "price": 5
        }
      },
      "totalQty": 3,
      "totalPrice": 8
    },
    "address": "London",
    "name": "John Cena",
    "paymentId": "ch_1Gc2KUIyQsnk8nhOTUR602KW",
    "__v": 0
  }
]

请温柔,我是新手!

更新:使用以下迭代管理获取嵌套的键和值: for(var i=0;i

        for (var key of Object.keys(orders[i].cart.items)) {


      console.log("Title: "+ orders[i].cart.items[key].item.productTitle );
      console.log("Quanitity: "+  orders[i].cart.items[key].qty);
      console.log(" Price:  "+orders[i].cart.items[key].item.productPrice );
      console.log(" Subtotal: "+orders[i].cart.items[key].item.productPrice * orders[i].cart.items[key].qty);


      console.log("Total Quantity is :"+orders[i].cart.totalQty+" & Total Price: £ " + orders[i].cart.totalPrice);


      }
4

1 回答 1

-1

我认为您错过了在 items 之后的呼叫点参考呼叫中获取5e92b488fc3e326b70be262d

orders[i].cart.items['5e92f5f9213dc863e0e97682'].item.productTitle

这对我有用。

5e92b488fc3e326b70be262d 也是您的 json 中的一个对象,因此您必须在访问 item 之前访问 5e92b488fc3e326b70be262d 对象。

'5e92f5f9213dc863e0e97682' 已作为地图而不是对象添加到您的 json 中。这就是为什么不使用点运算符的原因。

这就是我所做的。

this.http.get("assets/client.json").subscribe(data =>{
      console.log(data[0].cart.items['5e92f5f9213dc863e0e97682'].item.productTitle);
      var items = data[0].cart.items;
      console.log(items['5e92f5f9213dc863e0e97682'].item.productTitle);
    })

两个控制台语句都将double-Duvet作为输出。

于 2020-04-26T06:45:25.870 回答