Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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_Json - Fatal编程技术网

将json数据与javascript合并

将json数据与javascript合并,javascript,json,Javascript,Json,我得到了一个类似这样的JSON文件。 我需要合并来自同一certname的名称和值。 使用javascript实现这一点的最佳方法是什么 [ { certname: 'server1', environment: 'acceptance', name: 'clientcert', value: 'server1' }, { certname:

我得到了一个类似这样的JSON文件。 我需要合并来自同一certname的名称和值。

使用javascript实现这一点的最佳方法是什么

    [
        {
          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))