通过jquery将JSON转换为特定的JSON格式



这是我的JSON输入。我想在每个对象之前附加数据对象并转换为下面给出的特定格式。此外,任何可用于相同的插件都可以。将 JSON 转换为特定格式

[  
{  
"guid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE2",
"companyGuid":"12A5CD86-F6C6-455F-B27A-EFE587ED410D",
"parentLocationGuid":null,
"name":"location1",
"description":"test",
"isActive":true,
"row_num":2,
"children":[  
{  
"guid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE1",
"companyGuid":"12A5CD86-F6C6-455F-B27A-EFE587ED410D",
"parentLocationGuid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE2",
"name":"child location",
"description":"test child",
"isActive":true,
"row_num":1,
"children":[  
]
}
]
}
]

我希望输出为:

[  
{  
"data":{  
"guid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE2",
"companyGuid":"12A5CD86-F6C6-455F-B27A-EFE587ED410D",
"parentLocationGuid":null,
"name":"location1",
"description":"test",
"isActive":true,
"row_num":2
},
"children":[  
{  
"data":{  
"guid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE1",
"companyGuid":"12A5CD86-F6C6-455F-B27A-EFE587ED410D",
"parentLocationGuid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE2",
"name":"child location",
"description":"test child",
"isActive":true,
"row_num":1
},
"children":[  
]
}
]
}
]

这是您尝试制作的 ES6 实现。这适用于包含多个元素的列表。

function formatter(input){
let output = new Array();
input.forEach( data_input=>{
let result = {};
let children = [];
result['data'] = {};
Object.keys(data_input).forEach(key => {
if (data_input[key] instanceof Object ){
if(!(data_input[key] instanceof Array && data_input[key].length===0 )) 
children = data_input[key];
}
else{
result['data'][key] = data_input[key]
}
})
result['children'] = formatter(children);
output.push({'data': result['data']},{'children': result['children']})
})
return output
}
let myInput = [  
{  
"guid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE2",
"companyGuid":"12A5CD86-F6C6-455F-B27A-EFE587ED410D",
"parentLocationGuid":null,
"name":"location1",
"description":"test",
"isActive":true,
"row_num":2,
"children":[  
{  
"guid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE1",
"companyGuid":"12A5CD86-F6C6-455F-B27A-EFE587ED410D",
"parentLocationGuid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE2",
"name":"child location",
"description":"test child",
"isActive":true,
"row_num":1,
"children":[  
]
}
]
}
]

console.log(formatter(myInput))

使用 ES6 解构和扩展运算符相当容易

const res = data.map(({children,...otherProps})=>({data:{...otherProps}, children}));
console.log(res)
.as-console-wrapper {max-height: 100%!important;}
<script>
var data = [{
"guid": "6FCBBB6B-4B5E-42C4-B108-12F594DABEE2",
"companyGuid": "12A5CD86-F6C6-455F-B27A-EFE587ED410D",
"parentLocationGuid": null,
"name": "location1",
"description": "test",
"isActive": true,
"row_num": 2,
"children": [{
"guid": "6FCBBB6B-4B5E-42C4-B108-12F594DABEE1",
"companyGuid": "12A5CD86-F6C6-455F-B27A-EFE587ED410D",
"parentLocationGuid": "6FCBBB6B-4B5E-42C4-B108-12F594DABEE2",
"name": "child location",
"description": "test child",
"isActive": true,
"row_num": 1,
"children": [
]
}]
}]
</script>

最新更新