将json数据与javascript合并
我得到了一个类似这样的JSON文件。 我需要合并来自同一certname的名称和值。 使用javascript实现这一点的最佳方法是什么将json数据与javascript合并,javascript,json,Javascript,Json,我得到了一个类似这样的JSON文件。 我需要合并来自同一certname的名称和值。 使用javascript实现这一点的最佳方法是什么 [ { certname: 'server1', environment: 'acceptance', name: 'clientcert', value: 'server1' }, { certname:
[
{
certname: 'server1',
environment: 'acceptance',
name: 'clientcert',
value: 'server1'
},
{
certname: 'server2',
environment: 'acceptance',
name: 'clientcert',
value: 'server2'
},
{
certname: 'server3',
environment: 'acceptance',
name: 'clientcert',
value: 'server3'
}
],
]
{
certname: 'server1',
environment: 'acceptance',
name: 'operatingsystem',
value: 'windows'
},
{
certname: 'server2',
environment: 'acceptance',
name: 'operatingsystem',
value: 'windows'
},
{
certname: 'server3',
environment: 'acceptance',
name: 'operatingsystem',
value: 'RedHat'
}
],
[
{
certname: 'server1',
environment: 'acceptance',
name: 'operatingsystemmajrelease',
value: '2008 R2'
},
{
certname: 'server2',
environment: 'acceptance',
name: 'operatingsystemmajrelease',
value: '2008 R2'
},
{
certname: 'server3',
environment: 'acceptance',
name: 'operatingsystemmajrelease',
value: '6'
}
],
[
{
certname: 'server1',
environment: 'acceptance',
name: 'clientversion',
value: '5.5.2'
},
{
certname: 'server2',
environment: 'acceptance',
name: 'clientversion',
value: '5.5.2'
},
{
certname: 'server3',
environment: 'acceptance',
name: 'clientversion',
value: '5.5.2'
}
]
我需要合并来自同一certname的名称和值。
结果必须是:
var endresult= {
0:{clientcert:"server1", operatingsystem:"windows", operatingsystemmajrelease: "2008 R2", clientversion: 5.5.2},
1:{clientcert:"server2", operatingsystem:"windows", operatingsystemmajrelease: "2008 R2", clientversion: 5.5.2},
2:{clientcert:"server3", operatingsystem:"RedHat", operatingsystemmajrelease: 6, clientversion: 5.5.2},
};
或
我不知道合并回json格式或JS对象是否更容易——两者的结果都很好。:-)
我需要它来合并到SQL数据库中,所以我认为JSON是最好的结果
const json=[{certname:'server1',环境:'acceptance',名称:'clientcert',值:'server1'},{certname:'server2',环境:'acceptance',名称:'clientcert',值:'server3'},{certname:'server3',环境:'acceptance',名称:'clientcert',值:'server3'},{certname:'server1',environment:'acceptance',name:'operatingsystem',value:'windows'},{certname:'server2',environment:'acceptance',name:'operatingsystem',value:'RedHat'},{certname:'server3',environment:'acceptance',name:'operatingsystem',value:'RedHat'},{certname:'server1',environment:'acceptance',name:'operatingsystemmajrelease',value:'2008 R2'},{certname:'server2',environment:'acceptance',name:'operatingsystemmajrelease',value:'2008 R2'},{certname:'server3',environment:'acceptance',name:'operatingsystemmajrelease',value:'6'},{certname:'server1',environment:'acceptance',name:'clientversion',value:'5.5.2'},{certname:'server2',environment:'acceptance',name:'clientversion',value:'5.5.2'},{certname:'server3',environment:'Acceptation',name:'clientversion value:'5.5.2'},];
函数格式(json){
const data=json.reduce((a,b)=>{
如果(!a[b.certname])a[b.certname]={};
a[b.certname][b.name]=b.value;
返回a;
}, {});
返回Object.value(数据);
}
console.log(format(json));
Hi,Jour-code工作正常,但我确实犯了一个错误,我的json看起来有点不同,我确实编辑了我的帖子。:-)Hi,Jour-code工作正常,但我确实犯了一个错误,我的json看起来有点不同,我确实编辑了我的帖子。:-)
{
clientcert: 'server3',
operatingsystem: 'windows',
operatingsystemmajrelease: '2008 R2',
clientversion: '5.5.2'
},
{
clientcert: 'server2',
operatingsystem: 'windows',
operatingsystemmajrelease: '2008 R2',
clientversion: '5.5.2'
},
{
clientcert: 'server1',
operatingsystem: 'RedHat',
operatingsystemmajrelease: '6',
clientversion: '5.5.2'
},
const data = [{
certname: 'server1',
environment: 'acceptance',
name: 'clientcert',
value: 'server1'
},
{
certname: 'server2',
environment: 'acceptance',
name: 'clientcert',
value: 'server2'
},
{
certname: 'server3',
environment: 'acceptance',
name: 'clientcert',
value: 'server3'
},
{
certname: 'server1',
environment: 'acceptance',
name: 'operatingsystem',
value: 'windows'
},
{
certname: 'server2',
environment: 'acceptance',
name: 'operatingsystem',
value: 'windows'
},
{
certname: 'server3',
environment: 'acceptance',
name: 'operatingsystem',
value: 'RedHat'
},
{
certname: 'server1',
environment: 'acceptance',
name: 'operatingsystemmajrelease',
value: '2008 R2'
},
{
certname: 'server2',
environment: 'acceptance',
name: 'operatingsystemmajrelease',
value: '2008 R2'
},
{
certname: 'server3',
environment: 'acceptance',
name: 'operatingsystemmajrelease',
value: '6'
},
{
certname: 'server1',
environment: 'acceptance',
name: 'clientversion',
value: '5.5.2'
},
{
certname: 'server2',
environment: 'acceptance',
name: 'clientversion',
value: '5.5.2'
},
{
certname: 'server3',
environment: 'acceptance',
name: 'clientversion',
value: '5.5.2'
}];
const result = {};
data.forEach(val => {
if(result[val.certname]){
result[val.certname][val.name] = val.value;
}else{
result[val.certname] = {};
result[val.certname][val.name] = val.value;
}
})
JSON.stringify(Object.values(result))