将JSON对象与JSON子对象合并

Merging JSON objects with JSON sub-objects

本文关键字:JSON 对象 合并      更新时间:2023-09-26

我觉得我错过了一些非常明显的东西。。。我无法让JSON对象合并并保存它们的子对象。我有四个JSON对象需要合并。

Customer: {"datecreated":"12/10/2015 9:18 am","id":"5566447","entityid":"652967804","entitystatus":"13","companyname":"ABCTools Inc parent","altname":"ABCTools Inc parent","email":"jdoe@email.com","phone":"(512) 123-4567","subsidiary":"1"}
Contact: {"contact":{"datecreated":"12/10/2015 9:18 am","id":"5566544","entityid":"JohnDoe Customer","firstname":"JohnDoe","lastname":"Contact","email":"jdoe@email.com","phone":"(512) 123-4567","company":"5566447","subsidiary":"1"}}
SubCustomer: {"datecreated":"12/10/2015 9:18 am","id":"5566448","entityid":"652967805","entitystatus":"13","companyname":"ABCTools Inc sub","altname":"ABCTools Inc sub","email":"jdoe@email.com","phone":"(512) 123-4567","subsidiary":"1"}
subContact: {"subcontact":{"datecreated":"12/10/2015 7:14 am","id":"5566142","entityid":"JohnDoe SubCustomer","firstname":"Johndoe","lastname":"Subcustomer","email":"jdoe@email.com","phone":"(512) 123-4567","company":null,"subsidiary":"1"}}

我可以把它们和我们的问题合并在一起。但是,它们并没有保留它们的结构。以下是我最初用来合并它们的功能:

function concatObjects(cust,contact){
  for(var key in contact){
    cust[key]=contact[key];
  }
  return cust;
}

这对客户和联系人非常有效:

var mergedCust=concatObjects(customer,contact);
mergedCust: {"datecreated":"12/10/2015 9:18 am","id":"5566447","entityid":"652967804","entitystatus":"13","companyname":"ABCTools Inc parent","altname":"ABCTools Inc parent","email":"jdoe@email.com","phone":"(512) 123-4567","subsidiary":"1","contact":{"datecreated":"12/10/2015 9:18 am","id":"5566544","entityid":"JohnDoe Customer","firstname":"JohnDoe","lastname":"Contact","email":"jdoe@email.com","phone":"(512) 123-4567","company":"5566447","subsidiary":"1"}}

但是,当我在"子客户"answers"子联系人"上尝试时,他们只是简单地相互联系,就像这样:

mergedSubCust: {"subcustomer":{"datecreated":"12/10/2015 9:18 am","id":"5566448","entityid":"652967805","entitystatus":"13","companyname":"ABCTools Inc sub","altname":"ABCTools Inc sub","email":"jdoe@email.com","phone":"(512) 123-4567","subsidiary":"1"},"subcontact":{"datecreated":"12/10/2015 7:14 am","id":"5566142","entityid":"JohnDoe SubCustomer","firstname":"Johndoe","lastname":"Subcustomer","email":"jdoe@email.com","phone":"(512) 123-4567","company":null,"subsidiary":"1"}}

我可以看出这是因为它们是子对象。所以我尝试了这个:

function concatObjects(cust,contact){
    for(var key in contact){
      if(typeof contact[key]=='object'){
        cust[key]={};
        for(var subKey in contact){
          cust[key]=contact[subKey];
        }
      }else{
        cust[key]=contact[key];
      }
    }
    return cust;
  }

但是,它仍然返回相同的

mergedSub: {"subcustomer":{"datecreated":"12/10/2015 9:18 am","id":"5566448","entityid":"652967805","entitystatus":"13","companyname":"ABCTools Inc sub","altname":"ABCTools Inc sub","email":"jdoe@email.com","phone":"(512) 123-4567","subsidiary":"1"},"subcontact":{"datecreated":"12/10/2015 7:14 am","id":"5566142","entityid":"JohnDoe SubCustomer","firstname":"Johndoe","lastname":"Subcustomer","email":"jdoe@email.com","phone":"(512) 123-4567","company":null,"subsidiary":"1"}}

以下是它们合并在一起时的样子:

{
  "datecreated": "12'/10'/2015 9:18 am",
  "id": "5566447",
  "entityid": "652967804",
  "entitystatus": "13",
  "companyname": "ABCTools Inc parent",
  "altname": "ABCTools Inc parent",
  "email": "jdoe@email.com",
  "phone": "(512) 123-4567",
  "subsidiary": "1",
  "contact": {
    "datecreated": "12'/10'/2015 9:18 am",
    "id": "5566544",
    "entityid": "JohnDoe Customer",
    "firstname": "JohnDoe",
    "lastname": "Contact",
    "email": "jdoe@email.com",
    "phone": "(512) 123-4567",
    "company": "5566447",
    "subsidiary": "1"
  },
  "subcustomer": {
    "datecreated": "12'/10'/2015 9:18 am",
    "id": "5566448",
    "entityid": "652967805",
    "entitystatus": "13",
    "companyname": "ABCTools Inc sub",
    "altname": "ABCTools Inc sub",
    "email": "jdoe@email.com",
    "phone": "(512) 123-4567",
    "subsidiary": "1",
    "subcontact": {
      "datecreated": "12'/10'/2015 7:14 am",
      "id": "5566142",
      "entityid": "JohnDoe SubCustomer",
      "firstname": "Johndoe",
      "lastname": "Subcustomer",
      "email": "jdoe@email.com",
      "phone": "(512) 123-4567",
      "company": null,
      "subsidiary": "1"
    }
  }
}

我相信我缺少的是如何获取整个第二个对象并将其放置在第一个对象中,无论数据类型是什么

我在谷歌上搜索了很多,但没有找到任何具体的问题。。。感谢您对此的深入了解。

假设它们现在作为是一个json的一部分

var oneObj = {
   customer: {},
   contact: {},
   subcustomer: {},
   subcontact: {}
};

创建另一个对象作为

var finalObj = {};
finalObj.customer = oneObj.customer;
finalObj.customer.contact = oneObj.contact;
finalObj.customer.subcustomer = oneObj.subcustomer;
finalObj.customer.subcustomer.subcontact = oneObj.subcontact;