I am trying to merge several JSON objects into one, but I am having a hard time figuring out, how to get the desired result.
I am not very good at creating complex for-loops, which is preventing me from succeeding.
Sample area1.json
{
data: [
{
date: "2018031300",
p: [
{
lon: -5.555,
precip-intensity: 0,
wind-dir: 90.25001,
temperature: 3.7924042,
wind-speed: 8.692518,
weather-symbol: 3,
pressure-sealevel: 100247.5
},
{
lon: -4.444,
precip-intensity: 0,
wind-dir: 89.87501,
temperature: 3.1674042,
wind-speed: 8.731581,
weather-symbol: 3,
pressure-sealevel: 100238.5
}
]
},
{
date: "2018031301",
p: [
{
lon: -5.555,
precip-intensity: 0.00390625,
wind-dir: 97.500015,
temperature: 3.6734467,
wind-speed: 8.874923,
weather-symbol: 3,
pressure-sealevel: 100265.625
},
{
lon: -4.444,
precip-intensity: 0.00390625,
wind-dir: 96.000015,
temperature: 3.1109467,
wind-speed: 9.066329,
weather-symbol: 3,
pressure-sealevel: 100260.625
}
]
}
]
}
Sample area2.json
{
data: [
{
date: "2018031300",
p: [
{
lon: -7.777,
precip-intensity: 0.0078125,
wind-dir: 96.25001,
temperature: 4.792404,
wind-speed: 10.200331,
weather-symbol: 3,
pressure-sealevel: 100237
},
{
lon: -6.666,
precip-intensity: 0,
wind-dir: 86.50001,
temperature: 4.167404,
wind-speed: 11.106581,
weather-symbol: 3,
pressure-sealevel: 100243
}
]
},
{
date: "2018031301",
p: [
{
lon: -7.777,
precip-intensity: 0.03125,
wind-dir: 92.625015,
temperature: 4.7359467,
wind-speed: 11.066329,
weather-symbol: 3,
pressure-sealevel: 100242.125
},
{
lon: -6.666,
precip-intensity: 0.0078125,
wind-dir: 90.750015,
temperature: 4.2359467,
wind-speed: 11.24211,
weather-symbol: 3,
pressure-sealevel: 100269.625
}
]
}
]
}
This would be desired result
Combined area3.json
{
data: [
{
date: "2018031300",
p: [
{
lon: -7.777,
precip-intensity: 0.0078125,
wind-dir: 96.25001,
temperature: 4.792404,
wind-speed: 10.200331,
weather-symbol: 3,
pressure-sealevel: 100237
},
{
lon: -6.666,
precip-intensity: 0,
wind-dir: 86.50001,
temperature: 4.167404,
wind-speed: 11.106581,
weather-symbol: 3,
pressure-sealevel: 100243
},
{
lon: -5.555,
precip-intensity: 0,
wind-dir: 90.25001,
temperature: 3.7924042,
wind-speed: 8.692518,
weather-symbol: 3,
pressure-sealevel: 100247.5
},
{
lon: -4.444,
precip-intensity: 0,
wind-dir: 89.87501,
temperature: 3.1674042,
wind-speed: 8.731581,
weather-symbol: 3,
pressure-sealevel: 100238.5
}
]
},
{
date: "2018031301",
p: [
{
lon: -7.777,
precip-intensity: 0.03125,
wind-dir: 92.625015,
temperature: 4.7359467,
wind-speed: 11.066329,
weather-symbol: 3,
pressure-sealevel: 100242.125
},
{
lon: -6.666,
precip-intensity: 0.0078125,
wind-dir: 90.750015,
temperature: 4.2359467,
wind-speed: 11.24211,
weather-symbol: 3,
pressure-sealevel: 100269.625
},
{
lon: -5.555,
precip-intensity: 0.00390625,
wind-dir: 97.500015,
temperature: 3.6734467,
wind-speed: 8.874923,
weather-symbol: 3,
pressure-sealevel: 100265.625
},
{
lon: -4.444,
precip-intensity: 0.00390625,
wind-dir: 96.000015,
temperature: 3.1109467,
wind-speed: 9.066329,
weather-symbol: 3,
pressure-sealevel: 100260.625
}
]
}
]
}
The answer on this thread is almost there... Merge JSON Data by Key
I tried with this code...
function mergeJson(target) {
for (var argi = 1; argi < arguments.length; argi++) {
var source = arguments[argi];
for (var key in source) {
if (!(key in target)) {
target[key] = [];
}
for (var i = 0; i < source[key].length; i++) {
target[key].push(source[key][i]);
}
}
}
return target;
}
var finalJson = mergeJson({}, area1, area2);
This gives me two arrays...