Built something you're proud of? Tell the story. A quick G2 review of App Engine or Build Agent helps other developers see what's possible on ServiceNow. Share your experience.

how to merg two jsons into single json with primary key

String
Kilo Sage

Hi Team ,

we are reaching the two jsons and we need to merge into one json depends on primary key 

 

Json1=

[{"asset_details":"0f19a6518787d11089e3c8490cbb35bb","u_order":"1","chargeable":"true","amount":"","shipto_loc":"Finland","IO:49eb58f81ba9691009952f02604bcbd9":"false","total_qty":"","u_model_number":"3766B002","u_consumable":"4c61ce9e87d4a51089e3c8490cbb350b","u_price":"","product_name":"ab775db51b31951009952f02604bcbeb","max_qty":""},{"asset_details":"0f19a6518787d11089e3c8490cbb35bb","u_order":"11","chargeable":"true","amount":"","IO:6eebd0f81ba9691009952f02604bcbcc":"false","shipto_loc":"Finland","total_qty":"","u_model_number":"3766B","u_consumable":"4c61ce9e87d4a51089e3c8490cbb350b","u_price":"","product_name":"ab775db51b31951009952f02604bcbeb","max_qty":""}]

 

Json2=

[{"u_model_number":"3766B002","amount":"70”},{“u_model_number":"3766B","amount":"75"}]

 

Primary key is u_model_number in both the json

 

expected JSON as output :

 

[{"asset_details":"0f19a6518787d11089e3c8490cbb35bb","u_order":"1","chargeable":"true","amount":"70","shipto_loc":"Finland","IO:49eb58f81ba9691009952f02604bcbd9":"false","total_qty":"","u_model_number":"3766B002","u_consumable":"4c61ce9e87d4a51089e3c8490cbb350b","u_price":"","product_name":"ab775db51b31951009952f02604bcbeb","max_qty":""},{"asset_details":"0f19a6518787d11089e3c8490cbb35bb","u_order":"11","chargeable":"true","amount”:”75”,”IO:6eebd0f81ba9691009952f02604bcbcc":"false","shipto_loc":"Finland","total_qty":"","u_model_number":"3766B","u_consumable":"4c61ce9e87d4a51089e3c8490cbb350b","u_price":"","product_name":"ab775db51b31951009952f02604bcbeb","max_qty":""}]

 

 

we have to update the amount field with respective u_model_number(primary key)

 

Please guide me 

 

 

 

1 ACCEPTED SOLUTION

Not applicable

Hi @String,

 

try this code

var json1=mrvsjson;
var json2=inboundjson;
 
for (var i = 0; i < mrvsjson.length; i++) {
  for (var j = 0; j < inboundjson.length; j++) {
    if (mrvsjson[i].u_model_number === inboundjson[j].u_model_number) {
      mrvsjson[i].amount = inboundjson[j].amount;
    }
  }
}

gs.info("final check"+JSON.stringify(mrvsjson));

 

I hope this helps!

 

Regards,

Hemant 

**Please mark my answer correct or helpful based on the impact**

View solution in original post

4 REPLIES 4

Not applicable

Hi @String,

 

Here is a sample code(not tested)

 

var json1 = [{"asset_details":"0f19a6518787d11089e3c8490cbb35bb","u_order":"1","chargeable":"true","amount":"","shipto_loc":"Finland","IO:49eb58f81ba9691009952f02604bcbd9":"false","total_qty":"","u_model_number":"3766B002","u_consumable":"4c61ce9e87d4a51089e3c8490cbb350b","u_price":"","product_name":"ab775db51b31951009952f02604bcbeb","max_qty":""},{"asset_details":"0f19a6518787d11089e3c8490cbb35bb","u_order":"11","chargeable":"true","amount":"","IO:6eebd0f81ba9691009952f02604bcbcc":"false","shipto_loc":"Finland","total_qty":"","u_model_number":"3766B","u_consumable":"4c61ce9e87d4a51089e3c8490cbb350b","u_price":"","product_name":"ab775db51b31951009952f02604bcbeb","max_qty":""}];
var json2 = [{"u_model_number":"3766B002","amount":"70"},{"u_model_number":"3766B","amount":"75"}];

var json1Map = {};
for (var i = 0; i < json1.length; i++) {
  json1Map[json1[i].u_model_number] = json1[i];
}

for (var i = 0; i < json2.length; i++) {
  var key = json2[i].u_model_number;
  if (json1Map[key]) {
    json1Map[key].amount = json2[i].amount;
  }
}

var mergedJson = [];
for (var key in json1Map) {
  mergedJson.push(json1Map[key]);
}

gs.print(mergedJson) // result

 

I hope this helps!

 

Regards,

Hemant 

**Please mark my answer correct or helpful based on the impact**

Hi @Community Alums  thanks for your quick reply ,am have taken your ref and written below code .but not getting the merge json 

 

var json1=mrvsjson;
var json2=inboundjson;
 
var json1Map = {};
for (var i = 0; i < json1.length; i++) {
  json1Map[json1[i].u_model_number] = json1[i];
}
 
for (var j = 0; j < json2.length; j++) {
  var key = json2[j].u_model_number;
  if (json1Map[key]) {
    json1Map[key].amount = json2[j].amount;
 json1Map[key]. u_price = json2[j].price;
  }
}
 
Please guid me 
 
var mergedJson = [];
for (var key1 in json1Map) {
  mergedJson.push(json1Map[key1]);
}
 
gs.info("final check"+JSON.stringify(mergedJson));
        
 
        return JSON.stringify(mergedJson);
    },

Not applicable

Hi @String,

 

try this code

var json1=mrvsjson;
var json2=inboundjson;
 
for (var i = 0; i < mrvsjson.length; i++) {
  for (var j = 0; j < inboundjson.length; j++) {
    if (mrvsjson[i].u_model_number === inboundjson[j].u_model_number) {
      mrvsjson[i].amount = inboundjson[j].amount;
    }
  }
}

gs.info("final check"+JSON.stringify(mrvsjson));

 

I hope this helps!

 

Regards,

Hemant 

**Please mark my answer correct or helpful based on the impact**

thanks @Community Alums  it works !!