jQuery JSON to string?

JavascriptJqueryJson

Javascript Problem Overview


Instead of going JSON a json string and using $.parseJSON, I need to take my object and store it in a variable as string representing JSON.

(A library I'm dealing with expects a malformed JSON type so I need to mess around with it to get it to work.)

What's the best way to do this?

Javascript Solutions


Solution 1 - Javascript

Edit: You should use the json2.js library from Douglas Crockford instead of implementing the code below. It provides some extra features and better/older browser support.

Grab the json2.js file from: https://github.com/douglascrockford/JSON-js


// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function (obj) {
	var t = typeof (obj);
	if (t != "object" || obj === null) {
		// simple data type
		if (t == "string") obj = '"'+obj+'"';
		return String(obj);
	}
	else {
		// recurse array or object
		var n, v, json = [], arr = (obj && obj.constructor == Array);
		for (n in obj) {
			v = obj[n]; t = typeof(v);
			if (t == "string") v = '"'+v+'"';
			else if (t == "object" && v !== null) v = JSON.stringify(v);
			json.push((arr ? "" : '"' + n + '":') + String(v));
		}
		return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
	}
};

var tmp = {one: 1, two: "2"};
JSON.stringify(tmp); // '{"one":1,"two":"2"}'

Code from: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/

Solution 2 - Javascript

I use

$.param(jsonObj)

which gets me the string.

Solution 3 - Javascript

Most browsers have a native JSON object these days, which includes parse and stringify methods. So just try JSON.stringify({}) and see if you get "{}". You can even pass in parameters to filter out keys or to do pretty-printing, e.g. JSON.stringify({a:1,b:2}, null, 2) puts a newline and 2 spaces in front of each key.

JSON.stringify({a:1,b:2}, null, 2)

gives

"{\n  \"a\": 1,\n  \"b\": 2\n}"

which prints as

{
  "a": 1,
  "b": 2
}

As for the messing around part of your question, use the second parameter. From http://www.javascriptkit.com/jsref/json.shtml :

> The replacer parameter can either be a function or an array of > String/Numbers. It steps through each member within the JSON object to > let you decide what value each member should be changed to. As a > function it can return: > > - A number, string, or Boolean, which replaces the property's original value with the returned one. > - An object, which is serialized then returned. Object methods or functions are not allowed, and are removed instead. > - Null, which causes the property to be removed. > > As an array, the values defined inside it corresponds to the names of > the properties inside the JSON object that should be retained when > converted into a JSON object.

Solution 4 - Javascript

The best way I have found is to use [jQuery JSON][1]

[1]: http://code.google.com/p/jquery-json/ "jQuery JSON"

Solution 5 - Javascript

You could parse the JSON to an object, then create your malformed JSON from the ajavscript object. This may not be the best performance-wise, tho.

Otherwise, if you only need to make very small changes to the string, just treat it as a string, and mangle it using standard javascript.

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
QuestionIncognitoView Question on Stackoverflow
Solution 1 - JavascriptDaniel RView Answer on Stackoverflow
Solution 2 - JavascriptjonathanView Answer on Stackoverflow
Solution 3 - JavascriptAlexChaffeeView Answer on Stackoverflow
Solution 4 - JavascriptDavid ReynoldsView Answer on Stackoverflow
Solution 5 - JavascriptcofiemView Answer on Stackoverflow