How to create JSON string in JavaScript?

JavascriptJson

Javascript Problem Overview


window.onload = function(){
	var obj = '{
			"name" : "Raj",
			"age"  : 32,
			"married" : false
			}';
	
	var val = eval('(' + obj + ')');
	alert( "name : " + val.name + "\n" +
	       "age  : " + val.age  + "\n" +
		   "married : " + val.married );

}

In a code something like this, I am trying to create JSON string just to play around. It's throwing error, but if I put all the name, age, married in one single line (line 2) it doesn't. Whats the problem?

Javascript Solutions


Solution 1 - Javascript

The way i do it is:

   var obj = new Object();
   obj.name = "Raj";
   obj.age  = 32;
   obj.married = false;
   var jsonString= JSON.stringify(obj);

I guess this way can reduce chances for errors.

Solution 2 - Javascript

Disclaimer: This is not an answer to follow for the best way how to create JSON in JavaScript itself. This answer mostly tackles the question of "what is the problem?" or WHY the code above does not work - which is a wrong string concatenation attempt in JavaScript and does not tackle why String concatenation is a very bad way of creating a JSON String in the first place.

See here for best way to create JSON: https://stackoverflow.com/a/13488998/1127761

Read this answer to understand why the code sample above does not work.

Javascript doesn't handle Strings over multiple lines.

You will need to concatenate those:

var obj = '{'
       +'"name" : "Raj",'
       +'"age"  : 32,'
       +'"married" : false'
       +'}';

You can also use template literals in ES6 and above: (See here for the documentation)

var obj = `{
           "name" : "Raj",
           "age" : 32,
           "married" : false,
           }`;

Solution 3 - Javascript

The function JSON.stringify will turn your json object into a string:

var jsonAsString = JSON.stringify(obj);

In case the browser does not implement it (IE6/IE7), use the JSON2.js script. It's safe as it uses the native implementation if it exists.

Solution 4 - Javascript

This can be pretty easy and simple

var obj = new Object();
obj.name = "Raj";
obj.age = 32;
obj.married = false;

//convert object to json string
var string = JSON.stringify(obj);

//convert string to Json Object
console.log(JSON.parse(string)); // this is your requirement.

Solution 5 - Javascript

Use JSON.stringify:

> JSON.stringify({ asd: 'bla' });
'{"asd":"bla"}'

Solution 6 - Javascript

I think this way helps you...

var name=[];
var age=[];
name.push('sulfikar');
age.push('24');
var ent={};
for(var i=0;i<name.length;i++)
{
ent.name=name[i];
ent.age=age[i];
}
JSON.Stringify(ent);

Solution 7 - Javascript

json strings can't have line breaks in them. You'd have to make it all one line: {"key":"val","key2":"val2",etc....}.

But don't generate JSON strings yourself. There's plenty of libraries that do it for you, the biggest of which is jquery.

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
QuestionindianwebdevilView Question on Stackoverflow
Solution 1 - JavascriptAkhil SekharanView Answer on Stackoverflow
Solution 2 - JavascriptbardiirView Answer on Stackoverflow
Solution 3 - JavascriptDidier GhysView Answer on Stackoverflow
Solution 4 - JavascriptHiddenView Answer on Stackoverflow
Solution 5 - JavascriptTimWollaView Answer on Stackoverflow
Solution 6 - JavascriptSULFIKAR A NView Answer on Stackoverflow
Solution 7 - JavascriptMarc BView Answer on Stackoverflow