javascript - 在 java 脚本中从嵌套的 n 级数组/JSON 对象中搜索对象
问题描述
我有一个带有嵌套列表的 JSON 对象。此列表中的每个元素也可以是嵌套列表。每个元素的深度可以达到 n 级。我需要遍历所有元素并获取匹配搜索条件的对象。让我们说项目名称。如果我搜索项目名称,则应返回相应的对象。
列表结构
嵌套结构
下面是示例 JSON 结构。
{
"Description": "Rooftop heating/ cooling",
"Category": "HVAC",
"PartNumber": "MTU987456",
"Quantity": "1",
"Dimensions": "20(h)X20(b)",
"BomID": "BOM-430",
"Sublocation": "1st Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust3 data",
"Type": "Configured product",
"Custom2": "cust2 data",
"Uom": "each",
"Custom1": "cust1 data",
"ReferenceId": "1552780013",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "0",
"ItemName": "3-6-9 ton Rooftop heating/ cooling",
"Supplier": "Voltas",
"PartRevision": "MTU987456",
"ChildrenBillOfMaterials": [{
"ParentID": "BOM-430",
"Description": "Unit casing",
"Category": "HVAC",
"PartNumber": "U987456",
"Quantity": "1",
"Dimensions": "20(h)X20(b)",
"BomID": "BOM-431",
"Sublocation": "1st Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust3 data",
"Type": "Part",
"Custom2": "cust2 data",
"Uom": "each",
"Custom1": "cust1 data",
"ReferenceId": "15527456",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "1",
"ItemName": "Unit casing",
"Supplier": "Voltas",
"PartRevision": "U987456",
"ChildrenBillOfMaterials": [{
"ParentID": "BOM-431",
"Description": "Metal casing",
"Category": "HVAC",
"PartNumber": "M987456",
"Quantity": "1",
"Dimensions": "20(h)X20(b)",
"BomID": "BOM-432",
"Sublocation": "1st Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust3 data",
"Type": "Part",
"Custom2": "cust2 data",
"Uom": "each",
"Custom1": "cust1 data",
"ReferenceId": "1M5527456",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "2",
"ItemName": "Metal casing",
"Supplier": "Voltas",
"PartRevision": "M987456",
"ChildrenBillOfMaterials": [{
"ParentID": "BOM-432",
"Description": "Fibre casing insulation",
"Category": "HVAC",
"PartNumber": "M98745e",
"Quantity": "1",
"Dimensions": "20(h)X20(b)",
"BomID": "BOM-433",
"Sublocation": "1st Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust3 data",
"Type": "Part",
"Custom2": "cust2 data",
"Uom": "each",
"Custom1": "cust1 data",
"ReferenceId": "1M5C527456",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "3",
"ItemName": "Fibre casing insulation",
"Supplier": "Voltas",
"PartRevision": "M98745e",
"pxUniqueElementID": 1
}],
"pxUniqueElementID": 1
},
{
"ParentID": "BOM-431",
"Description": "Fibre casing",
"Category": "HVAC",
"PartNumber": "M98745e",
"Quantity": "1",
"Dimensions": "20(h)X20(b)",
"BomID": "BOM-445",
"Sublocation": "1st Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust3 data",
"Type": "Part",
"Custom2": "cust2 data",
"Uom": "each",
"Custom1": "cust1 data",
"ReferenceId": "1M5527457",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "2",
"ItemName": "Fibre casing",
"Supplier": "Voltas",
"PartRevision": "M98745e",
"pxUniqueElementID": 2
}
],
"pxUniqueElementID": 1
},
{
"ParentID": "BOM-430",
"Description": "Evaporator coil",
"Category": "HVAC",
"PartNumber": "U774488",
"Quantity": "1",
"Dimensions": "21(h)X21(b)",
"BomID": "BOM-434",
"Sublocation": "2nd Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust6 data",
"Type": "Part",
"Custom2": "cust5 data",
"Uom": "one",
"Custom1": "cust4 data",
"ReferenceId": "205456",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "1",
"ItemName": "Evaporator coil",
"Supplier": "Voltas",
"PartRevision": "U774488",
"pxUniqueElementID": 2
},
{
"ParentID": "BOM-430",
"Description": "Fan assembly",
"Category": "HVAC",
"PartNumber": "U1FN41100",
"Quantity": "1",
"Dimensions": "22(h)X22(b)",
"BomID": "BOM-435",
"Sublocation": "3rd Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust9 data",
"Type": "Part",
"Custom2": "cust8 data",
"Uom": "one",
"Custom1": "cust7 data",
"ReferenceId": "205457",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "1",
"ItemName": "Fan assembly",
"Supplier": "Voltas",
"PartRevision": "U1FN41100",
"ChildrenBillOfMaterials": [{
"ParentID": "BOM-435",
"Description": "Motor",
"Category": "HVAC",
"PartNumber": "U14110MOT0",
"Quantity": "1",
"Dimensions": "22(h)X22(b)",
"BomID": "BOM-436",
"Sublocation": "3rd Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust9 data",
"Type": "Part",
"Custom2": "cust8 data",
"Uom": "one",
"Custom1": "cust7 data",
"ReferenceId": "20MO5457",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "2",
"ItemName": "Motor",
"Supplier": "Voltas",
"PartRevision": "U14110MOT0",
"ChildrenBillOfMaterials": [{
"ParentID": "BOM-436",
"Description": "Rotor",
"Category": "HVAC",
"PartNumber": "U1RR41100",
"Quantity": "1",
"Dimensions": "22(h)X22(b)",
"BomID": "BOM-437",
"Sublocation": "3rd Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust9 data",
"Type": "Part",
"Custom2": "cust8 data",
"Uom": "one",
"Custom1": "cust7 data",
"ReferenceId": "20MORO5457",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "3",
"ItemName": "Rotor",
"Supplier": "Voltas",
"PartRevision": "U1RR41100",
"ChildrenBillOfMaterials": [{
"ParentID": "BOM-437",
"Description": "Steel bearings",
"Category": "HVAC",
"PartNumber": "U1411ST00",
"Quantity": "1",
"Dimensions": "22(h)X22(b)",
"BomID": "BOM-438",
"Sublocation": "3rd Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust9 data",
"Type": "Part",
"Custom2": "cust8 data",
"Uom": "one",
"Custom1": "cust7 data",
"ReferenceId": "20MOBEO5457",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "3",
"ItemName": "Steel bearings",
"Supplier": "Voltas",
"PartRevision": "U1411ST00",
"pxUniqueElementID": 1
}],
"pxUniqueElementID": 1
}],
"pxUniqueElementID": 1
},
{
"ParentID": "BOM-435",
"Description": "Propeller fan",
"Category": "HVAC",
"PartNumber": "U141100",
"Quantity": "1",
"Dimensions": "22(h)X22(b)",
"BomID": "BOM-439",
"Sublocation": "3rd Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust9 data",
"Type": "Part",
"Custom2": "cust8 data",
"Uom": "one",
"Custom1": "cust7 data",
"ReferenceId": "205GO457",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "2",
"ItemName": "Propeller fan",
"Supplier": "Voltas",
"PartRevision": "PR3",
"pxUniqueElementID": 2
}
],
"pxUniqueElementID": 3
},
{
"ParentID": "BOM-430",
"Description": "Compressor",
"Category": "HVAC",
"PartNumber": "U78999",
"Quantity": "1",
"Dimensions": "23(h)X23(b)",
"BomID": "BOM-440",
"Sublocation": "4th Floor",
"GroupID": "BOM-430",
"pxObjClass": "",
"Custom3": "cust12 data",
"Type": "Part",
"Custom2": "cust11 data",
"Uom": "each",
"Custom1": "cust10 data",
"ReferenceId": "205458",
"Manufacturer": "AirXpert Systems",
"BOMLevel": "1",
"ItemName": "Compressor",
"Supplier": "Voltas",
"PartRevision": "U78999",
"pxUniqueElementID": 4
}
]
}
解决方案
您可以使用“。”继续查找子元素。
$.each("jsonobj variable", function(index, element) {
alert(element.description);
});
推荐阅读
- python - Python SharePoint 连接给出 400 客户端错误
- javascript - TinyMCE 无法初始化插件:wordpress 中的代码错误
- typescript - OnClick 甚至反应打字稿都不起作用
- excel - excel单元格按其他单元格的值自增
- sql - 即使每个标识符都有效,SQL 也拒绝进行连接?(ORA-00904)
- javascript - JS:从对象数组中提取数据
- json - 将转换后的值转换为 JSON 时出错。转换后的值不是有效的 JSON
- c++ - 当 rust-bindgen 不适用于原始头文件时,为 C++ 库编写包装器的最佳方法是什么?
- r - 使用 R 包 RSiena 创建 siena 数据时更改协变量的错误
- c++ - 如何在 VSCode for MacOS 中仅更改括号的格式设置而不更改其他格式设置?