将JSON对象与JSON子对象合并
Merging JSON objects with JSON sub-objects
我觉得我错过了一些非常明显的东西。。。我无法让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;
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 如何为json对象中的段发送array[]
- 将JSON对象传递给angular指令
- 更改JSON对象的结构
- 访问JSON对象内部的数组元素
- 在ejs-partial中对JSON对象进行迭代
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 访问嵌套JSON对象的键,其中键是动态的
- json对象中缺少对象循环
- 发送json对象或使用express路由呈现视图
- 在play2框架中向json对象添加下拉列表项
- 元素名称上带有短划线 (-) 字符的 Json 对象
- autocomplete不接受源的json对象
- 如何在javascript中创建动态json对象
- 在使用客户端脚本时拾取JSON对象
- 如何通过json对象数组为嵌套对象赋值
- 构造JSON对象