Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将结果json转换为不同格式的javascript_Javascript_Node.js - Fatal编程技术网

将结果json转换为不同格式的javascript

将结果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

我正在开发一个应用程序,需要将响应json转换为不同的格式,并将其传递给不同的API。我发现很难转换所需的结构

输入:

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。如果您可以指导如何转换为所需的格式。“。如果您可以指导如何转换为所需的格式。”---从更简单的事情开始:从原始数组中提取一个项,并将其属性之一转换为所需的格式。一个对象的一个属性。您可以这样做吗?如果不可以,您现在在这个小问题上遇到的确切问题是什么?