如何在雪花或javascript上动态平坦嵌套Json ?



这是我正在使用的JSON文件的一个例子,它有大约600行相同的嵌套JSON结构。

{
"at": {
"Availability": "Yes",
"Message": "NV",
"Delivery option": "fast",
},
"childNodeIds": [],
"crawlMessageFlags": null,
"pd": {
"product_id": "product_id value",
"product_name": "product_name value",
"retailerName": "retailerName value",
"stock_status": "InStock",
"subClassName": "n/a"
},
"sellers": [],
"zipDetails": {}
}

我想生成一个报告,其中PD中的键作为列名。示例

--------------------------------------------------------
product_id  |   product_name     | retailerName
-----------------------------------------------------------
productid value1| product_name value1| retailerName value1
productid value2| product_name value2| retailerName value2
productid value3| product_name value3| retailerName value3
productid value4| product_name value4| retailerName value4

我可以用硬编码的值生成这个表,但我想动态地做,因为我们有几个不同的用例。

我从网上尝试了几个解决方案,但没有一个解决这个问题没有硬编码。

解决方案吗?

这里有一个方法可能对您有用。根据结果变量(输出)的结构,您可能需要进行相应的重构。

const list = [
{
"at": {
"Availability": "Yes",
"Message": "NV",
"Delivery option": "fast",
},
"childNodeIds": [],
"crawlMessageFlags": null,
"pd": {
"product_id": "product_id value1",
"product_name": "product_name value1",
"retailerName": "retailerName value1",
"stock_status": "InStock 1",
"subClassName": "n/a"
},
"sellers": [],
"zipDetails": {}
},
{
"at": {
"Availability": "Yes",
"Message": "NV",
"Delivery option": "fast",
},
"childNodeIds": [],
"crawlMessageFlags": null,
"pd": {
"product_id": "product_id value2",
"product_name": "product_name value2",
"retailerName": "retailerName value2",
"stock_status": "InStock 2",
"subClassName": "n/a"
},
"sellers": [],
"zipDetails": {}
}
]
const output = list.reduce((acc,{ pd })=>{
acc.push([ pd.product_id, pd.product_name, pd.retailerName ])
return acc;
}, [["product_id", "product_name", "retailerName"]]);

console.log( output );

最新更新