I have a nested JSON structure which will always have two keys by the name top_nest
and mid_nest
. However, at what level these two keys will be nested that may vary depending on the data set.
Each of top_nest and mid_nest has a 'remark' which is always null initially.
I want to populate that remark
key with the value from an array.
Below is my code which I tried only for mid_nest
key :
var nestedjson = {
edition: '1.3.0',
OUTER_MOST: {
secondnest: {
mainstruct: {
top_nest: [
{
portblair: 'mtlb_wc_way0_fcl',
dir: 'left',
locs: ['/loc/local'],
remark: 'crc',
id: 1544593588899,
$count: 0,
$parent: 0,
$level: 1,
$height: 256,
},
],
mid_nest: [
{
ept: 'qop[3:0:0]',
remark: null,
race: 'false',
spt: ['mki[2:7:21]', 'epk[20:14.2:9.8]'],
inod: 'u_pqp',
mlace: 'pqp',
portblair: ['qq[31:9:24]', 'ax[2:16:1]'],
marcus: [
{
dir: 'left',
h_loc: ['/op/locs'],
sign: '0',
portblair_w: '81',
race_duty: '0',
},
{
race_duty: '0',
portblair_h: '28',
sign: '2',
dir: 'rigt',
h_loc: ['/pr/op'],
},
],
},
{
eptt: 'yie[3:0:0]',
remark: null,
race: 'false',
spt: ['mki[2:7:21]', 'epk[20:14.2:9.8]'],
inod: 'u_pqp',
mlace: 'pqp',
portblair: ['qq[31:9:24]', 'ax[2:16:1]'],
marcus: [
{
dir: 'left',
h_loc: ['/op/locs'],
sign: '0',
portblair_width: '8',
race_duty: '0',
},
{
race_duty: '0',
portblair_width: '8',
sign: '2',
dir: 'rigt',
h_loc: ['/pr/op'],
},
],
},
],
},
qq: 'ss',
},
},
dst: 'dss',
};
// function to take out the mid_nest structure to change its remark key
function findJson(json) {
var mid_ret = [];
for (var k in json) {
if (k === 'mid_nest') {
//console.log("breaking as mid reached");
mid_ret = json[k];
break;
} else if (typeof json[k] === 'object') {
findJson(json[k]);
}
}
console.log('--after break--');
return mid_ret;
}
var mid_ret = findJson(nestedJson);
var remark_arr = ['remark_1', 'remark2']; // array for assigning remarks
for (var i in remark_arr) {
var rem = remark_arr;
mid_ret[i]['remark'] = rem;
}
// assigning the changed mid_ret back to the original nestedJson
for (var k in nestedJson) {
if (k === 'mid_nest') {
nestedJson[k] = mid_ret;
} else if (typeof nestedJson[k] === 'object') {
continue;
}
}
However, the above code is not working as in the findJson()
,
(i) even after matching the mid_nest the loop is not breaking, still iterating hence not returning the correct mid_nest value.
(ii) Because of that the rest of the processing like , changing the remark key by the array values and assigning it back to the original structure is not working.
Any help will be much appreciated.
Thanks.