将结果json转换为不同格式的javascript
我正在开发一个应用程序,需要将响应json转换为不同的格式,并将其传递给不同的API。我发现很难转换所需的结构 输入:将结果json转换为不同格式的javascript,javascript,node.js,Javascript,Node.js,我正在开发一个应用程序,需要将响应json转换为不同的格式,并将其传递给不同的API。我发现很难转换所需的结构 输入: var value = `[ { "PRODUCT_GROUP": "Accessories", "MATERIAL_GROUP": "S98", "MATERIAL": "300154", "MATERIAL_DESC": "BLOCKS", "PP_AD": 45.7, "PP_DISC_OLD": 34.7
var value = `[
{
"PRODUCT_GROUP": "Accessories",
"MATERIAL_GROUP": "S98",
"MATERIAL": "300154",
"MATERIAL_DESC": "BLOCKS",
"PP_AD": 45.7,
"PP_DISC_OLD": 34.7
},
{
"PRODUCT_GROUP": "Accessories",
"MATERIAL_GROUP": "S98",
"MATERIAL": "000000000000300155",
"MATERIAL_DESC": "PALLET",
"PP_AD": 123.7,
"PP_DISC_OLD": 43.7
},
{
"PRODUCT_GROUP": "Accessories",
"MATERIAL_GROUP": "S99",
"MATERIAL": "300155",
"MATERIAL_DESC": " WOODEN",
"PP_AD": 23.7,
"PP_DISC_OLD": 23.7
}
]`;
我需要将其转换为下面提到的结果
输出:
{
"categoreies": [{
"PRODUCT_GROUP": "Accessories",
"MATERIAL_GROUP": "S98",
"categoreies": [{
"MATERIAL": "300154",
"MATERIAL_DESC": "BLOCKS",
"PP_AD": 45.7,
"PP_DISC_OLD": 34.7
}, {
"MATERIAL": "000000000000300155",
"MATERIAL_DESC": "PALLET",
"PP_AD": 123.7,
"PP_DISC_OLD": 43.7
}]
},
{
"PRODUCT_GROUP": "Accessories",
"MATERIAL_GROUP": "S99",
"categoreies": [{
"MATERIAL": "300155",
"MATERIAL_DESC": " WOODEN",
"PP_AD": 23.7,
"PP_DISC_OLD": 23.7
}]
}
]
}]
我试图循环代码并形成一个对象,但得到了期望的结果
请帮忙
value=JSON.parse(value);
let firstobj={},arr1=[],secobj={},arr2=[],finalobj={};
value.forEach((items)=>{
firstobj.PRODUCT_GROUP=items.PRODUCT_GROUP;
firstobj.MATERIAL_GROUP=items.MATERIAL_GROUP;
arr1.push(firstobj);
secobj.MATERIAL=items.MATERIAL;
secobj.MATERIAL_DESC=items.MATERIAL_DESC;
arr2.push(secobj);
finalobj.CATEGORIES=arr2;
console.log(finalobj)
})
您可以帮助我将输入json转换为结果json吗?您可以为每个条目创建一个键,它是产品和物料组的组合(例如json)。然后用这些键和数组作为值创建一个映射,最初全部为空。然后迭代数据以填充这些数组。最后,将该映射转换为目标结构
let value=`[{“产品组”:“附件”,“材料组”:“S98”,“材料组”:“300154”,“材料描述”:“块”,“PP广告”:45.7,“PP光盘旧版”:34.7},{“产品组”:“附件”,“材料组”:“S98”,“材料”:“000000 300155”,“材料描述”:“托盘”,“PP广告”:123.7,“PP光盘旧版”:43.7},{“产品组”:“附件”,“材料组”:“S99”,“材料组”:“300155”,“材料组”:“木制”,“PP-AD”:23.7,“PP-DISC-U-OLD”:23.7}`;
让arr=JSON.parse(value).map({PRODUCT\u GROUP,MATERIAL\u GROUP,…rest})=>
({group:JSON.stringify({PRODUCT\u group,MATERIAL\u group}),rest})
);
让map=newmap(arr.map(({group})=>[group,[]);
arr.forEach(({group,rest})=>map.get(group.push(rest));
让result=Array.from(map.entries(),([group,categories])=>
({…JSON.parse(group),categories})
);
console.log(结果);
尝试以下操作:
var值=`[
{
“产品组”:“附件”,
“材料组”:“S98”,
“材料”:“300154”,
“材料描述”:“块体”,
“PP_广告”:45.7,
“PP_DISC_OLD”:34.7
},
{
“产品组”:“附件”,
“材料组”:“S98”,
“材料”:“000000000000300155”,
“物料描述”:“托盘”,
“PP_AD”:123.7,
“PP_DISC_OLD”:43.7
},
{
“产品组”:“附件”,
“物料组”:“S99”,
“材料”:“300155”,
“材料描述”:“木制”,
“PP_广告”:23.7,
“PP_DISC_OLD”:23.7
}
]`;
value=JSON.parse(value);
让outputobj={};
outputobj.categories=[];
设tmpdict={};
value.forEach((项)=>{
如果(!tmpdict[物料组]){
tmpdict[项目材料组]={
“产品组”:items.PRODUCT\u组,
“物料组”:items.MATERIAL\u组,
“类别”:[]
}
}
设tmpobj={
“物料”:物料,
“材料描述”:items.MATERIAL\u DESC,
“PP_广告”:items.PP_广告,
“PP_DISC_OLD”:项目。PP_DISC_OLD
}
tmpdict[项目.物料组].类别.推送(tmpobj);
})
用于(让输入tmpdict){
outputobj.categories.push(tmpdict[key]);
}
console.log(outputobj);
newJSON=JSON.stringify(outputobj);
log(newJSON);
您忘了问问题。@zerkms:需要将输入json转换为结果json。问题不是需求或愿望的表达式。它通常带有问号。您在尝试时遇到的与编程相关的具体问题是什么?@trincot我无法转换为所需的格式。需要将其传递给API。如果您可以指导如何转换为所需的格式。“。如果您可以指导如何转换为所需的格式。”---从更简单的事情开始:从原始数组中提取一个项,并将其属性之一转换为所需的格式。一个对象的一个属性。您可以这样做吗?如果不可以,您现在在这个小问题上遇到的确切问题是什么?