pushing json to array gives duplicate values

Prem13
Tera Contributor

im trying to push multiple records values into an json array , but it returns duplicate values.

var child_ci_value=[];
		var child_ci_field=[];
		var childci = {};
		var relci=[];
var rel=new GlideRecord("cmdb_rel_ci");
		rel.addQuery("parent","6a78f28f933a31003b4bb095e57ffb8a");
	rel.query();
		while(rel.next())
			{
				
			var childcmdb=new GlideRecord("cmdb_ci");
				childcmdb.addQuery("sys_id",rel.child)
				childcmdb.query();
					
				if(childcmdb.next())
					{
			var fields1=childcmdb.getFields();
						
				for (var i1 = 0; i1 < fields1.size(); i1++) {
			var glideElement1 = fields1.get(i1);
			if (glideElement1.hasValue()) {
				child_ci_field.push(glideElement1);
				child_ci_value.push(glideElement1.getName());
		
		}
	}
						for(var i=0;i<child_ci_value.length;i++)
{
childci[child_ci_value[i]] = child_ci_field[i].toString();
}
						gs.log(JSON.stringify(childci),"1")
						relci.push(childci);
						
					}
			}
gs.print(JSON.stringify(relci))

output:-

before pushing into array it gets different records

1st log

1: {"operational_status":"1","sys_updated_on":"2008-10-26 17:16:08","sys_updated_by":"glide.maint","sys_created_on":"2008-10-26 17:16:08","sys_domain":"global","sys_created_by":"glide.maint","sys_domain_path":"/","install_status":"1","name":"PS Apache01","can_print":"false","sys_class_name":"cmdb_ci_web_server","sys_class_path":"/!!/!(/!3/!#","sys_mod_count":"3","monitor":"false","cost_cc":"USD","support_group":"5f6441efc0a8010e0177fcb589156352","unverified":"false","asset":"77c13e8837f3100044e0bfc8bcbe5d2e","fault_count":"0"}
1: {"operational_status":"1","sys_updated_on":"2008-10-26 17:16:23","sys_updated_by":"glide.maint","sys_created_on":"2008-10-26 17:16:23","sys_domain":"global","sys_created_by":"glide.maint","sys_domain_path":"/","install_status":"1","name":"PS Apache03","can_print":"false","sys_class_name":"cmdb_ci_web_server","sys_class_path":"/!!/!(/!3/!#","sys_mod_count":"5","monitor":"false","cost_cc":"USD","support_group":"5f6441efc0a8010e0177fcb589156352","unverified":"false","asset":"f7c13e8837f3100044e0bfc8bcbe5d31","fault_count":"0"}
1: {"operational_status":"1","sys_updated_on":"2008-10-26 18:31:32","sys_updated_by":"glide.maint","sys_created_on":"2008-10-26 18:31:32","sys_domain":"global","sys_created_by":"glide.maint","sys_domain_path":"/","install_status":"1","name":"SAP WEB03","can_print":"false","sys_class_name":"cmdb_ci_web_server","sys_class_path":"/!!/!(/!3/!#","sys_mod_count":"8","monitor":"false","cost_cc":"USD","support_group":"5f6441efc0a8010e0177fcb589156352","unverified":"false","asset":"f7c13e8837f3100044e0bfc8bcbe5d3b","fault_count":"0"}
1: {"operational_status":"1","sys_updated_on":"2011-08-02 11:14:10","sys_updated_by":"admin","sys_created_on":"2010-11-25 10:34:38","sys_domain":"global","sys_created_by":"felix.bait","sys_domain_path":"/","install_status":"1","name":"Java Application Server FLX","can_print":"false","sys_class_name":"cmdb_ci_app_server_java","sys_class_path":"/!!/!(/!)/!2","sys_mod_count":"3","monitor":"false","cost_cc":"USD","support_group":"5f6441efc0a8010e0177fcb589156352","unverified":"false","asset":"f7c13e8837f3100044e0bfc8bcbe5d3b","fault_count":"0","maintenance_schedule":"82b90aa00ad337027ef3faa2690f25a8","location":"108752c8c611227501d4ab0e392ba97f"}
1: {"operational_status":"1","sys_updated_on":"2008-10-26 17:16:15","sys_updated_by":"glide.maint","sys_created_on":"2008-10-26 17:16:15","sys_domain":"global","sys_created_by":"glide.maint","sys_domain_path":"/","install_status":"1","name":"PS Apache02","can_print":"false","sys_class_name":"cmdb_ci_web_server","sys_class_path":"/!!/!(/!3/!#","sys_mod_count":"4","monitor":"false","cost_cc":"USD","support_group":"5f6441efc0a8010e0177fcb589156352","unverified":"false","asset":"bfc13e8837f3100044e0bfc8bcbe5d2f","fault_count":"0","maintenance_schedule":"82b90aa00ad337027ef3faa2690f25a8","location":"108752c8c611227501d4ab0e392ba97f"}
1: {"operational_status":"1","sys_updated_on":"2008-10-26 18:31:20","sys_updated_by":"glide.maint","sys_created_on":"2008-10-26 18:31:20","sys_domain":"global","sys_created_by":"glide.maint","sys_domain_path":"/","install_status":"1","name":"SAP WEB01","can_print":"false","sys_class_name":"cmdb_ci_web_server","sys_class_path":"/!!/!(/!3/!#","sys_mod_count":"6","monitor":"false","cost_cc":"USD","support_group":"5f6441efc0a8010e0177fcb589156352","unverified":"false","asset":"77c13e8837f3100044e0bfc8bcbe5d38","fault_count":"0","maintenance_schedule":"82b90aa00ad337027ef3faa2690f25a8","location":"108752c8c611227501d4ab0e392ba97f"}
1: {"operational_status":"1","sys_updated_on":"2008-10-26 18:31:37","sys_updated_by":"glide.maint","sys_created_on":"2008-10-26 18:31:37","sys_domain":"global","sys_created_by":"glide.maint","sys_domain_path":"/","install_status":"1","name":"SAP WEB04","can_print":"false","sys_class_name":"cmdb_ci_web_server","sys_class_path":"/!!/!(/!3/!#","sys_mod_count":"9","monitor":"false","cost_cc":"USD","support_group":"5f6441efc0a8010e0177fcb589156352","unverified":"false","asset":"33c13e8837f3100044e0bfc8bcbe5d3d","fault_count":"0","maintenance_schedule":"82b90aa00ad337027ef3faa2690f25a8","location":"108752c8c611227501d4ab0e392ba97f"}
1: {"operational_status":"1","sys_updated_on":"2007-11-10 05:39:12","sys_updated_by":"glide.maint","sys_created_on":"2007-11-10 05:39:12","sys_domain":"global","sys_created_by":"glide.maint","sys_domain_path":"/","install_status":"1","name":"EXCH-SD-07","can_print":"false","sys_class_name":"cmdb_ci_email_server","sys_class_path":"/!!/!(/!3/!7","sys_mod_count":"0","monitor":"false","cost_cc":"USD","support_group":"5f6441efc0a8010e0177fcb589156352","unverified":"false","asset":"33c13e8837f3100044e0bfc8bcbe5d3d","fault_count":"0","maintenance_schedule":"82b90aa00ad337027ef3faa2690f25a8","location":"108752c8c611227501d4ab0e392ba97f","install_date":"2007-11-09 05:38:08"}

once its been pushed into array it gives same records

2nd log

  {
        "operational_status": "1",
        "sys_updated_on": "2007-11-10 05:39:12",
        "sys_updated_by": "glide.maint",
        "sys_created_on": "2007-11-10 05:39:12",
        "sys_domain": "global",
        "sys_created_by": "glide.maint",
        "sys_domain_path": "/",
        "install_status": "1",
        "name": "EXCH-SD-07",
        "can_print": "false",
        "sys_class_name": "cmdb_ci_email_server",
        "sys_class_path": "/!!/!(/!3/!7",
        "sys_mod_count": "0",
        "monitor": "false",
        "cost_cc": "USD",
        "support_group": "5f6441efc0a8010e0177fcb589156352",
        "unverified": "false",
        "asset": "33c13e8837f3100044e0bfc8bcbe5d3d",
        "fault_count": "0",
        "maintenance_schedule": "82b90aa00ad337027ef3faa2690f25a8",
        "location": "108752c8c611227501d4ab0e392ba97f",
        "install_date": "2007-11-09 05:38:08"
      },
      {
        "operational_status": "1",
        "sys_updated_on": "2007-11-10 05:39:12",
        "sys_updated_by": "glide.maint",
        "sys_created_on": "2007-11-10 05:39:12",
        "sys_domain": "global",
        "sys_created_by": "glide.maint",
        "sys_domain_path": "/",
        "install_status": "1",
        "name": "EXCH-SD-07",
        "can_print": "false",
        "sys_class_name": "cmdb_ci_email_server",
        "sys_class_path": "/!!/!(/!3/!7",
        "sys_mod_count": "0",
        "monitor": "false",
        "cost_cc": "USD",
        "support_group": "5f6441efc0a8010e0177fcb589156352",
        "unverified": "false",
        "asset": "33c13e8837f3100044e0bfc8bcbe5d3d",
        "fault_count": "0",
        "maintenance_schedule": "82b90aa00ad337027ef3faa2690f25a8",
        "location": "108752c8c611227501d4ab0e392ba97f",
        "install_date": "2007-11-09 05:38:08"
      },
      {
        "operational_status": "1",
        "sys_updated_on": "2007-11-10 05:39:12",
        "sys_updated_by": "glide.maint",
        "sys_created_on": "2007-11-10 05:39:12",
        "sys_domain": "global",
        "sys_created_by": "glide.maint",
        "sys_domain_path": "/",
        "install_status": "1",
        "name": "EXCH-SD-07",
        "can_print": "false",
        "sys_class_name": "cmdb_ci_email_server",
        "sys_class_path": "/!!/!(/!3/!7",
        "sys_mod_count": "0",
        "monitor": "false",
        "cost_cc": "USD",
        "support_group": "5f6441efc0a8010e0177fcb589156352",
        "unverified": "false",
        "asset": "33c13e8837f3100044e0bfc8bcbe5d3d",
        "fault_count": "0",
        "maintenance_schedule": "82b90aa00ad337027ef3faa2690f25a8",
        "location": "108752c8c611227501d4ab0e392ba97f",
        "install_date": "2007-11-09 05:38:08"
      },
      {
        "operational_status": "1",
        "sys_updated_on": "2007-11-10 05:39:12",
        "sys_updated_by": "glide.maint",
        "sys_created_on": "2007-11-10 05:39:12",
        "sys_domain": "global",
        "sys_created_by": "glide.maint",
        "sys_domain_path": "/",
        "install_status": "1",
        "name": "EXCH-SD-07",
        "can_print": "false",
        "sys_class_name": "cmdb_ci_email_server",
        "sys_class_path": "/!!/!(/!3/!7",
        "sys_mod_count": "0",
        "monitor": "false",
        "cost_cc": "USD",
        "support_group": "5f6441efc0a8010e0177fcb589156352",
        "unverified": "false",
        "asset": "33c13e8837f3100044e0bfc8bcbe5d3d",
        "fault_count": "0",
        "maintenance_schedule": "82b90aa00ad337027ef3faa2690f25a8",
        "location": "108752c8c611227501d4ab0e392ba97f",
        "install_date": "2007-11-09 05:38:08"
      },
      {
        "operational_status": "1",
        "sys_updated_on": "2007-11-10 05:39:12",
        "sys_updated_by": "glide.maint",
        "sys_created_on": "2007-11-10 05:39:12",
        "sys_domain": "global",
        "sys_created_by": "glide.maint",
        "sys_domain_path": "/",
        "install_status": "1",
        "name": "EXCH-SD-07",
        "can_print": "false",
        "sys_class_name": "cmdb_ci_email_server",
        "sys_class_path": "/!!/!(/!3/!7",
        "sys_mod_count": "0",
        "monitor": "false",
        "cost_cc": "USD",
        "support_group": "5f6441efc0a8010e0177fcb589156352",
        "unverified": "false",
        "asset": "33c13e8837f3100044e0bfc8bcbe5d3d",
        "fault_count": "0",
        "maintenance_schedule": "82b90aa00ad337027ef3faa2690f25a8",
        "location": "108752c8c611227501d4ab0e392ba97f",
        "install_date": "2007-11-09 05:38:08"
      },
      {
        "operational_status": "1",
        "sys_updated_on": "2007-11-10 05:39:12",
        "sys_updated_by": "glide.maint",
        "sys_created_on": "2007-11-10 05:39:12",
        "sys_domain": "global",
        "sys_created_by": "glide.maint",
        "sys_domain_path": "/",
        "install_status": "1",
        "name": "EXCH-SD-07",
        "can_print": "false",
        "sys_class_name": "cmdb_ci_email_server",
        "sys_class_path": "/!!/!(/!3/!7",
        "sys_mod_count": "0",
        "monitor": "false",
        "cost_cc": "USD",
        "support_group": "5f6441efc0a8010e0177fcb589156352",
        "unverified": "false",
        "asset": "33c13e8837f3100044e0bfc8bcbe5d3d",
        "fault_count": "0",
        "maintenance_schedule": "82b90aa00ad337027ef3faa2690f25a8",
        "location": "108752c8c611227501d4ab0e392ba97f",
        "install_date": "2007-11-09 05:38:08"
      },
      {
        "operational_status": "1",
        "sys_updated_on": "2007-11-10 05:39:12",
        "sys_updated_by": "glide.maint",
        "sys_created_on": "2007-11-10 05:39:12",
        "sys_domain": "global",
        "sys_created_by": "glide.maint",
        "sys_domain_path": "/",
        "install_status": "1",
        "name": "EXCH-SD-07",
        "can_print": "false",
        "sys_class_name": "cmdb_ci_email_server",
        "sys_class_path": "/!!/!(/!3/!7",
        "sys_mod_count": "0",
        "monitor": "false",
        "cost_cc": "USD",
        "support_group": "5f6441efc0a8010e0177fcb589156352",
        "unverified": "false",
        "asset": "33c13e8837f3100044e0bfc8bcbe5d3d",
        "fault_count": "0",
        "maintenance_schedule": "82b90aa00ad337027ef3faa2690f25a8",
        "location": "108752c8c611227501d4ab0e392ba97f",
        "install_date": "2007-11-09 05:38:08"
      },
      {
        "operational_status": "1",
        "sys_updated_on": "2007-11-10 05:39:12",
        "sys_updated_by": "glide.maint",
        "sys_created_on": "2007-11-10 05:39:12",
        "sys_domain": "global",
        "sys_created_by": "glide.maint",
        "sys_domain_path": "/",
        "install_status": "1",
        "name": "EXCH-SD-07",
        "can_print": "false",
        "sys_class_name": "cmdb_ci_email_server",
        "sys_class_path": "/!!/!(/!3/!7",
        "sys_mod_count": "0",
        "monitor": "false",
        "cost_cc": "USD",
        "support_group": "5f6441efc0a8010e0177fcb589156352",
        "unverified": "false",
        "asset": "33c13e8837f3100044e0bfc8bcbe5d3d",
        "fault_count": "0",
        "maintenance_schedule": "82b90aa00ad337027ef3faa2690f25a8",
        "location": "108752c8c611227501d4ab0e392ba97f",
        "install_date": "2007-11-09 05:38:08"
      }

 

1 ACCEPTED SOLUTION

Greg42
Mega Guru

It's because you are pushing a reference to the same object. You are re-populating the same object with the values on each iteration. That is why you see "duplicate" elements as that is where all the references, refer to. You will have to create a separate object literal in each iteration.

If you add: var childci = {}; before the second for and remove it from before the while:

var childci = {};
for(var i=0;i<child_ci_value.length;i++) {
   childci[child_ci_value[i]] = child_ci_field[i].toString();
}

You should have an unique object on each push.

View solution in original post

6 REPLIES 6

Brad Bowman
Kilo Patron
Kilo Patron

I would try to push the stringified childci instead

relci.push(JSON.stringify(childci));

 

I want to send as a json this converts the json to String 

Willem
Giga Sage
Giga Sage

Can you try it like this:

var Getcidetails = Class.create();
Getcidetails.prototype = {
    initialize: function () {
    },

    multipleci: function (sysid) {
        var fields;
        var gr = new GlideRecord('cmdb_ci');
        gr.get(sysid);
        fields = gr.getFields();
        var hits = [];
        var value = [];
        var field = [];
        var json = {};
        for (var i = 0; i < fields.size(); i++) {
            var glideElement = fields.get(i);
            if (glideElement.hasValue()) {
                field.push(glideElement);
                value.push(glideElement.getName());
                //hits.push(glideElement.getName() + ':' +glideElement);
                //json.push(glideElement.getName() + ':' +glideElement);
            }
        }
        var obj1 = {};
        for (var i = 0; i < value.length; i++) {
            obj1[value[i]] = field[i].toString();
        }


        /*-------------------------------- above part pushing parent ci---------*/
        var arr2 = [];
        var obj2 ={};
        var rel = new GlideRecord("cmdb_rel_ci");
        rel.addQuery("parent", sysid);
        rel.query();
        while (rel.next()) {
            var childcmdb = new GlideRecord("cmdb_ci");
            if(childcmdb.get(rel.child.toString())) {
                var fields1 = childcmdb.getFields();
                for (var i1 = 0; i1 < fields1.size(); i1++) {
                    var glideElement1 = fields1.get(i1);
                    if (glideElement1.hasValue()) {
                        obj2[glideElement1.getName()] = glideElement1.toString();
                        arr2.push(obj2);
                    }
                }
            }
        }



        json.parent = obj1;
        json.child = arr2;
        return JSON.stringify(json);
    },

    type: 'Getcidetails'
};

Prem13
Tera Contributor

Still it shows duplicate values