Create JSON object dynamically via JavaScript (Without concate strings)

JavascriptJson

Javascript Problem Overview


I have this JSON data:

{
    "employees": [
        {
            "firstName": "John",
            "lastName": "Doe"
        },
        {
            "firstName": "Anna",
            "lastName": "Smith"
        },
        {
            "firstName": "Peter",
            "lastName": "Jones"
        }
    ]
}

Suppose I don't know how many columns and rows of employees I have, how do I create this object in JavaScript (Without concate strings)? Assume that I get each row in "onGeneratedRow" method, and I need to push each column (firstName, lastName) to the '{}' brackets.

var viewData = { 
	employees : [] 
};

var rowNum = -1; 

function onGeneratedRow(columnsResult)
{
	rowNum = rowNum + 1;
	viewData.employees.push({});	
	columnsResult.forEach(function(column) {		  		  
	var columnName = column.metadata.colName;
	viewData.employees[rowNum][columnName] = column.value;	});
}

Javascript Solutions


Solution 1 - Javascript

This is what you need!

function onGeneratedRow(columnsResult)
{
    var jsonData = {};
	columnsResult.forEach(function(column) 
	{
		var columnName = column.metadata.colName;
		jsonData[columnName] = column.value;
	});
    viewData.employees.push(jsonData);
 }

Solution 2 - Javascript

Perhaps this information will help you.

var sitePersonel = {};
var employees = []
sitePersonel.employees = employees;
console.log(sitePersonel);

var firstName = "John";
var lastName = "Smith";
var employee = {
  "firstName": firstName,
  "lastName": lastName
}
sitePersonel.employees.push(employee);
console.log(sitePersonel);

var manager = "Jane Doe";
sitePersonel.employees[0].manager = manager;
console.log(sitePersonel);

console.log(JSON.stringify(sitePersonel));

Solution 3 - Javascript

This topic, especially the answer of Xotic750 was very helpful to me. I wanted to generate a json variable to pass it to a php script using ajax. My values were stored into two arrays, and i wanted them in json format. This is a generic example:

valArray1 = [121, 324, 42, 31];
valArray2 = [232, 131, 443];
myJson = {objArray1: {}, objArray2: {}};
for (var k = 1; k < valArray1.length; k++) {
    var objName = 'obj' + k;
    var objValue = valArray1[k];
    myJson.objArray1[objName] = objValue;
}
for (var k = 1; k < valArray2.length; k++) {
    var objName = 'obj' + k;
    var objValue = valArray2[k];
    myJson.objArray2[objName] = objValue;
}
console.log(JSON.stringify(myJson));

The result in the console Log should be something like this:

{
   "objArray1": {
        "obj1": 121,
        "obj2": 324,
        "obj3": 42,
        "obj4": 31
   },
   "objArray2": {
        "obj1": 232,
        "obj2": 131,
        "obj3": 443
  }
}

Solution 4 - Javascript

> JavaScript

var myObj = {
   id: "c001",
   name: "Hello Test"
}

> Result(JSON)

{
   "id": "c001",
   "name": "Hello Test"
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionohadinhoView Question on Stackoverflow
Solution 1 - JavascriptWaqar AlamgirView Answer on Stackoverflow
Solution 2 - JavascriptXotic750View Answer on Stackoverflow
Solution 3 - Javascriptthe_butterfly_effectView Answer on Stackoverflow
Solution 4 - JavascriptIshan LakshithaView Answer on Stackoverflow