如何合并 JSON 个具有相同名称的对象
How to merge JSON Objects having same name
最初我有 Json 数组,它是使用 underscore
groupBy
函数的数组对象数组,我已经分组并且每个都分组但是我又想合并所有数组具有相同的对象名称,下面是我想要实现的方式,有人可以帮助我吗?
即我在 JSON 数组中有相同 JSON 具有相同 versionId
的对象,现在我想合并所有具有相同 versionId
[=19= 的 JSON 对象]
有人可以帮助使用 underscore
或 Lodash
框架轻松完成吗
输入JSON
[
{
"21289": [
{
"id": 255463,
"orderId": 226433,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person A",
"executedByDisplay": "Person A",
"cycleId": 4042,
"cycleName": "Cycle A",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "A"
},
{
"id": 255433,
"orderId": 226403,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "B"
},
{
"id": 255432,
"orderId": 226402,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "C"
}
],
"21291": [
{
"id": 252067,
"orderId": 223258,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "D"
},
{
"id": 252014,
"orderId": 223205,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "E"
},
{
"id": 252012,
"orderId": 223203,
"status": 1,
"executedOn": "11/Sep/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "F"
}
]
},
{
"21291": [
{
"id": 251449,
"orderId": 222640,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person E",
"executedByDisplay": "Person E",
"cycleId": 3978,
"cycleName": "Cycle D",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "G"
},
{
"id": 251299,
"orderId": 222490,
"status": 1,
"executedOn": "1/Sep/17",
"executedBy": "Person F",
"executedByDisplay": "Person F",
"cycleId": 3977,
"cycleName": "Cycle E",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "H"
}
],
"31457": [
{
"id": 250969,
"orderId": 222160,
"status": 1,
"executedOn": "29/Aug/17",
"executedBy": "Person G",
"executedByDisplay": "Person G",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "I"
},
{
"id": 250871,
"orderId": 222062,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "J"
},
{
"id": 250869,
"orderId": 222060,
"status": 1,
"executedOn": "4/Sep/17",
"executedBy": "Person H",
"executedByDisplay": "Person H",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "K"
}
]
}
]
输出我想要的JSON
[
{
"21289": [
{
"id": 255463,
"orderId": 226433,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person A",
"executedByDisplay": "Person A",
"cycleId": 4042,
"cycleName": "Cycle A",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "A"
},
{
"id": 255433,
"orderId": 226403,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "B"
},
{
"id": 255432,
"orderId": 226402,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "C"
}
],
"21291": [
{
"id": 252067,
"orderId": 223258,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "D"
},
{
"id": 252014,
"orderId": 223205,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "E"
},
{
"id": 252012,
"orderId": 223203,
"status": 1,
"executedOn": "11/Sep/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "F"
},
{
"id": 251449,
"orderId": 222640,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person E",
"executedByDisplay": "Person E",
"cycleId": 3978,
"cycleName": "Cycle D",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "G"
},
{
"id": 251299,
"orderId": 222490,
"status": 1,
"executedOn": "1/Sep/17",
"executedBy": "Person F",
"executedByDisplay": "Person F",
"cycleId": 3977,
"cycleName": "Cycle E",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "H"
}
],
"31457": [
{
"id": 250969,
"orderId": 222160,
"status": 1,
"executedOn": "29/Aug/17",
"executedBy": "Person G",
"executedByDisplay": "Person G",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "I"
},
{
"id": 250871,
"orderId": 222062,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "J"
},
{
"id": 250869,
"orderId": 222060,
"status": 1,
"executedOn": "4/Sep/17",
"executedBy": "Person H",
"executedByDisplay": "Person H",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "K"
}
]
}
]
如果您知道结构将完全像这样,这里有一个非常简单的解决方案:
var a = [
{
"21289": [
{
"id": 255463,
"orderId": 226433,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person A",
"executedByDisplay": "Person A",
"cycleId": 4042,
"cycleName": "Cycle A",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "A"
},
{
"id": 255433,
"orderId": 226403,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "B"
},
{
"id": 255432,
"orderId": 226402,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "C"
}
],
"21291": [
{
"id": 252067,
"orderId": 223258,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "D"
},
{
"id": 252014,
"orderId": 223205,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "E"
},
{
"id": 252012,
"orderId": 223203,
"status": 1,
"executedOn": "11/Sep/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "F"
}
]
},
{
"21291": [
{
"id": 251449,
"orderId": 222640,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person E",
"executedByDisplay": "Person E",
"cycleId": 3978,
"cycleName": "Cycle D",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "G"
},
{
"id": 251299,
"orderId": 222490,
"status": 1,
"executedOn": "1/Sep/17",
"executedBy": "Person F",
"executedByDisplay": "Person F",
"cycleId": 3977,
"cycleName": "Cycle E",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "H"
}
],
"31457": [
{
"id": 250969,
"orderId": 222160,
"status": 1,
"executedOn": "29/Aug/17",
"executedBy": "Person G",
"executedByDisplay": "Person G",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "I"
},
{
"id": 250871,
"orderId": 222062,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "J"
},
{
"id": 250869,
"orderId": 222060,
"status": 1,
"executedOn": "4/Sep/17",
"executedBy": "Person H",
"executedByDisplay": "Person H",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "K"
}
]
}
];
function filterKeys(result, obj) {
for (var key in obj) {
result[key] = (key in result? result[key].concat(obj[key]) : obj[key]);
}
return result;
}
console.log(a.reduce(filterKeys, {}));
最初我有 Json 数组,它是使用 underscore
groupBy
函数的数组对象数组,我已经分组并且每个都分组但是我又想合并所有数组具有相同的对象名称,下面是我想要实现的方式,有人可以帮助我吗?
即我在 JSON 数组中有相同 JSON 具有相同 versionId
的对象,现在我想合并所有具有相同 versionId
[=19= 的 JSON 对象]
有人可以帮助使用 underscore
或 Lodash
框架轻松完成吗
输入JSON
[
{
"21289": [
{
"id": 255463,
"orderId": 226433,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person A",
"executedByDisplay": "Person A",
"cycleId": 4042,
"cycleName": "Cycle A",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "A"
},
{
"id": 255433,
"orderId": 226403,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "B"
},
{
"id": 255432,
"orderId": 226402,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "C"
}
],
"21291": [
{
"id": 252067,
"orderId": 223258,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "D"
},
{
"id": 252014,
"orderId": 223205,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "E"
},
{
"id": 252012,
"orderId": 223203,
"status": 1,
"executedOn": "11/Sep/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "F"
}
]
},
{
"21291": [
{
"id": 251449,
"orderId": 222640,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person E",
"executedByDisplay": "Person E",
"cycleId": 3978,
"cycleName": "Cycle D",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "G"
},
{
"id": 251299,
"orderId": 222490,
"status": 1,
"executedOn": "1/Sep/17",
"executedBy": "Person F",
"executedByDisplay": "Person F",
"cycleId": 3977,
"cycleName": "Cycle E",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "H"
}
],
"31457": [
{
"id": 250969,
"orderId": 222160,
"status": 1,
"executedOn": "29/Aug/17",
"executedBy": "Person G",
"executedByDisplay": "Person G",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "I"
},
{
"id": 250871,
"orderId": 222062,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "J"
},
{
"id": 250869,
"orderId": 222060,
"status": 1,
"executedOn": "4/Sep/17",
"executedBy": "Person H",
"executedByDisplay": "Person H",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "K"
}
]
}
]
输出我想要的JSON
[
{
"21289": [
{
"id": 255463,
"orderId": 226433,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person A",
"executedByDisplay": "Person A",
"cycleId": 4042,
"cycleName": "Cycle A",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "A"
},
{
"id": 255433,
"orderId": 226403,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "B"
},
{
"id": 255432,
"orderId": 226402,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "C"
}
],
"21291": [
{
"id": 252067,
"orderId": 223258,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "D"
},
{
"id": 252014,
"orderId": 223205,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "E"
},
{
"id": 252012,
"orderId": 223203,
"status": 1,
"executedOn": "11/Sep/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "F"
},
{
"id": 251449,
"orderId": 222640,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person E",
"executedByDisplay": "Person E",
"cycleId": 3978,
"cycleName": "Cycle D",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "G"
},
{
"id": 251299,
"orderId": 222490,
"status": 1,
"executedOn": "1/Sep/17",
"executedBy": "Person F",
"executedByDisplay": "Person F",
"cycleId": 3977,
"cycleName": "Cycle E",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "H"
}
],
"31457": [
{
"id": 250969,
"orderId": 222160,
"status": 1,
"executedOn": "29/Aug/17",
"executedBy": "Person G",
"executedByDisplay": "Person G",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "I"
},
{
"id": 250871,
"orderId": 222062,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "J"
},
{
"id": 250869,
"orderId": 222060,
"status": 1,
"executedOn": "4/Sep/17",
"executedBy": "Person H",
"executedByDisplay": "Person H",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "K"
}
]
}
]
如果您知道结构将完全像这样,这里有一个非常简单的解决方案:
var a = [
{
"21289": [
{
"id": 255463,
"orderId": 226433,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person A",
"executedByDisplay": "Person A",
"cycleId": 4042,
"cycleName": "Cycle A",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "A"
},
{
"id": 255433,
"orderId": 226403,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "B"
},
{
"id": 255432,
"orderId": 226402,
"status": 1,
"executedOn": "25/Sep/17",
"executedBy": "Person B",
"executedByDisplay": "Person B",
"cycleId": 4041,
"cycleName": "Cycle B",
"versionId": 21289,
"versionName": "Version A",
"issueKey": "C"
}
],
"21291": [
{
"id": 252067,
"orderId": 223258,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "D"
},
{
"id": 252014,
"orderId": 223205,
"status": 1,
"executedOn": "12/Sep/17",
"executedBy": "Person C",
"executedByDisplay": "Person C",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "E"
},
{
"id": 252012,
"orderId": 223203,
"status": 1,
"executedOn": "11/Sep/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3985,
"cycleName": "Cycle C",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "F"
}
]
},
{
"21291": [
{
"id": 251449,
"orderId": 222640,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person E",
"executedByDisplay": "Person E",
"cycleId": 3978,
"cycleName": "Cycle D",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "G"
},
{
"id": 251299,
"orderId": 222490,
"status": 1,
"executedOn": "1/Sep/17",
"executedBy": "Person F",
"executedByDisplay": "Person F",
"cycleId": 3977,
"cycleName": "Cycle E",
"versionId": 21291,
"versionName": "Version B",
"issueKey": "H"
}
],
"31457": [
{
"id": 250969,
"orderId": 222160,
"status": 1,
"executedOn": "29/Aug/17",
"executedBy": "Person G",
"executedByDisplay": "Person G",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "I"
},
{
"id": 250871,
"orderId": 222062,
"status": 1,
"executedOn": "31/Aug/17",
"executedBy": "Person D",
"executedByDisplay": "Person D",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "J"
},
{
"id": 250869,
"orderId": 222060,
"status": 1,
"executedOn": "4/Sep/17",
"executedBy": "Person H",
"executedByDisplay": "Person H",
"cycleId": 3973,
"cycleName": "Cycle F",
"versionId": 31457,
"versionName": "Version C",
"issueKey": "K"
}
]
}
];
function filterKeys(result, obj) {
for (var key in obj) {
result[key] = (key in result? result[key].concat(obj[key]) : obj[key]);
}
return result;
}
console.log(a.reduce(filterKeys, {}));