Javascript 将JSON从一种格式转换为另一种格式

Javascript 将JSON从一种格式转换为另一种格式,javascript,arrays,json,Javascript,Arrays,Json,我正在尝试将下面的JSON转换为另一种格式,其中reultant JSON不包含valueChainEntity对象名称,并且我还想删除输入和输出数组。请注意,该结构是父子关系,输入和输出数组可以出现在任何级别的项目数组。即使在所有级别中(但仅在项目数组内部) 我的代码: inputJSON.forEach((item) => { return item.valueChainEntity; }); //which w

我正在尝试将下面的JSON转换为另一种格式,其中reultant JSON不包含valueChainEntity对象名称,并且我还想删除输入输出数组。请注意,该结构是父子关系,输入和输出数组可以出现在任何级别的项目数组。即使在所有级别中(但仅在项目数组内部)

我的代码:

 inputJSON.forEach((item) => {
                    return item.valueChainEntity;
                });
//which will traverse only through the first level and will not delete the **inputs** and **outputs** array..

看看下面的方法是否有效:

函数parseInputJSON(inp){ 返回输入映射(函数(项){ 返回getValueChainEntity(项目); }); } 函数getValueChainEntity(项){ 如果(项['valueChainEntity']!=未定义){ var valueChainEntity=item.valueChainEntity; valueChainEntity.items=parseInputJSON(valueChainEntity.items); 返回valueChainEntity; } 退货项目; } var inputJSON=[ { “valueChainEntity”:{ “id”:308, “ValueChaineEntityId”:48, “项目”:[ { “valueChainEntity”:{ “id”:309, “ValueChaineEntityId”:49, “项目”:[ { “valueChainEntity”:{ “id”:312, “valueChainEntityId”:50, “项目”:[] }, “投入”:[ { “id”:312, “valueChainEntityId”:50, “项目”:[] } ], “产出”:[ { “id”:313, “valueChainEntityId”:50 } ] } ] } } ] } }]; var newInput=parseInputJSON(inputJSON); document.getElementById(“json”).innerHTML=json.stringify(newInput,未定义,4)
这是另一种可行的方法

示例代码

    function populateChildrenRecursively(outputTypeId, valueChainEntities, parentValueChainEntity) {
        for (var i = 0; i < valueChainEntities.length; i++) {
            if (valueChainEntities[i].valueChainEntity.valueChainEntityId != parentValueChainEntity.valueChainEntity.valueChainEntityId && hasInput(outputTypeId, valueChainEntities[i].inputs)) {
                parentValueChainEntity.valueChainEntity.items.push(valueChainEntities[i]);
                if (valueChainEntities[i].outputs.length > 0) {
                    valueChainEntities[i].valueChainEntity.items = [];
                    for (var j = 0; j < valueChainEntities[i].outputs.length; j++) {
                        populateChildrenRecursively(valueChainEntities[i].outputs[j].outputTypeId, valueChainEntities, valueChainEntities[i]);
                    }
                }
            }
        }
    }
函数递归地populateChildren(outputTypeId、valueChainEntities、parentValueChainEntity){
对于(var i=0;i0){
valueChainEntities[i].valueChainEntity.items=[];
对于(var j=0;j

您只想放弃
输入
输出
属性?解析它,删除您想要的内容并将其转换回字符串。。。yes@11thdimension并且需要从每个级别删除名称valueChainEntity并按原样显示内容
    function populateChildrenRecursively(outputTypeId, valueChainEntities, parentValueChainEntity) {
        for (var i = 0; i < valueChainEntities.length; i++) {
            if (valueChainEntities[i].valueChainEntity.valueChainEntityId != parentValueChainEntity.valueChainEntity.valueChainEntityId && hasInput(outputTypeId, valueChainEntities[i].inputs)) {
                parentValueChainEntity.valueChainEntity.items.push(valueChainEntities[i]);
                if (valueChainEntities[i].outputs.length > 0) {
                    valueChainEntities[i].valueChainEntity.items = [];
                    for (var j = 0; j < valueChainEntities[i].outputs.length; j++) {
                        populateChildrenRecursively(valueChainEntities[i].outputs[j].outputTypeId, valueChainEntities, valueChainEntities[i]);
                    }
                }
            }
        }
    }