【发布时间】:2018-01-06 16:13:29
【问题描述】:
我正在尝试读取 JSON 模式,但似乎无法弄清楚如何将所有先前的对象等输出到层次结构中。
这是 JSON 响应方案
{
"Shopping": {
"Orders": {
"OrderInfo": {
"OrderNumber": "D0102864",
"ContactID": "AS76372",
"OrderDate": "01/01/2018",
"Billing": {
"BillingID": "B673472",
"Name": "Fred Smith"
},
"Delivery": {
"DeliveryID": "D769397",
"Name": "Joe Blogg"
},
"Discount": {
"DiscountValue": "10"
},
"OrderProduct": {
"NumberofItems": "1",
"Items": {
"Item": {
"ProductID": "P5763868",
"ItemName": "Big Blue Box",
"Price": "10",
}
}
}
}
}
}
}
添加多个项目数组[]
{
"Shopping": {
"Orders": {
"OrderInfo": {
"OrderNumber": "D0102864",
"ContactID": "AS76372",
"OrderDate": "01/01/2018",
"Billing": {
"BillingID": "B673472",
"Name": "Fred Smith"
},
"Delivery": {
"DeliveryID": "D769397",
"Name": "Joe Blogg"
},
"Discount": {
"DiscountValue": "10"
},
"OrderProduct": {
"NumberofItems": "2",
"Items": {
"Item": [
{
"ProductID": "P5763868",
"ItemName": "Big Blue Box",
"Price": "10",
},
{
"ProductID": "P57638262",
"ItemName": "Big Red Box",
"Price": "20",
}
]
}
}
}
}
}
}
在下面的 javascript 函数中,我尝试生成输出结构 Object_nestedObject_Keyname,如下面的示例。请注意,JSON 是 Ajax 调用以及其他数据,但我只需要遍历购物对象。
function js_traverse(o) {
var type = typeof o
if (type == "object") {
for (var key in o) {
console.log("key: ", key)
js_traverse(o[key])
}
} else {
console.log("value: ",o)
}
}
js_traverse(data['Shopping']); <- above scheme
我试图在控制台日志中创建以下输出,类似于树形结构
Orders
Orders_OrdersInfo
Orders_OrdersInfo_OrderNumber
Orders_OrdersInfo_ContactID
Orders_OrdersInfo_OrderDate
Orders_OrdersInfo_Billing
Orders_OrdersInfo_Billing_BillingID
Orders_OrdersInfo_Billing_Name
Orders_OrdersInfo_Delivery
Orders_OrdersInfo_Delivery_DeliveryID
Orders_OrdersInfo_Delivery_Name
Orders_OrdersInfo_Discount
Orders_OrdersInfo_Discount_DiscountValue
Orders_OrdersInfo_OrderProduct
Orders_OrdersInfo_OrderProduct_NumberofItems
Orders_OrdersInfo_OrderProduct_Items
Orders_OrdersInfo_OrderProduct_Items_Item
Orders_OrdersInfo_OrderProduct_Items_Item_ProductID_1 <-- increment number at end if multiple item
Orders_OrdersInfo_OrderProduct_Items_Item_ItemName_1 <-- increment at end if multiple item
Orders_OrdersInfo_OrderProduct_Items_Item_Price_1 <-- increment at end if multiple item
【问题讨论】:
-
为什么需要以1开头的数字而不是索引?
-
谢谢,没关系,我可以用索引代替
-
里面只有一个数组吗?为什么最后是数字?
标签: javascript json tree