通过jquery将JSON转换为特定的JSON格式
这是我的JSON输入。我想在每个对象之前附加数据对象,并将其转换为下面给出的特定格式。同样,任何可用的插件也可以。将JSON转换为特定格式通过jquery将JSON转换为特定的JSON格式,jquery,json,Jquery,Json,这是我的JSON输入。我想在每个对象之前附加数据对象,并将其转换为下面给出的特定格式。同样,任何可用的插件也可以。将JSON转换为特定格式 [ { "guid":"6FCBBB6B-4B5E-42C4-B108-12F594DABEE2", "companyGuid":"12A5CD86-F6C6-455F-B27A-EFE587ED410D", "parentLocationGuid":null, "name":"location1", "descrip
[
{
"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解构和扩展运算符
const res=data.map({children,…otherProps})=>({data:{…otherProps},children});
console.log(res)
。作为控制台包装{最大高度:100%!重要;}
风险值数据=[{
“guid”:“6FCBBB6B-4B5E-42C4-B108-12F594DABEE2”,
“公司指南”:“12A5CD86-F6C6-455F-B27A-EFE587ED410D”,
“parentLocationGuid”:空,
“名称”:“位置1”,
“说明”:“测试”,
“isActive”:是的,
“行数”:2,
“儿童”:[{
“guid”:“6FCBBB6B-4B5E-42C4-B108-12F594DABEE1”,
“公司指南”:“12A5CD86-F6C6-455F-B27A-EFE587ED410D”,
“parentLocationGuid”:“6FCBBB6B-4B5E-42C4-B108-12F594DABEE2”,
“名称”:“子位置”,
“说明”:“测试子项”,
“isActive”:是的,
“行数”:1,
“儿童”:[
]
}]
}]
以下是您试图实现的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))
您尝试了什么?尝试循环并附加到数据对象,但没有得到所需的结果。我遗漏了一些东西,你应该解析json并从中创建你的对象。我发布了一个答案,给出了你的输出。请让我知道这是否是你想要的。“可能b我遗漏了一些东西”-是的,你遗漏了询问插件等的建议在这里是离题的,而且这不是一个代码编写服务,所以你至少应该向我们展示你迄今为止尝试过的东西。请阅读这方面的内容。我还需要子节点中的数据对象。。在所有N级儿童中,感谢您的回答。实际上,我需要在子节点启动之前完成数据对象。在这种情况下,数据对象同时包含父对象和子对象。我需要不同数据对象中的父节点和子节点。请帮助..编辑,现在尝试。