I have some JSON encoded strings and I need to easily parse them. Any ideas how to do this? I am a noob in javaScript and I can't do it myself. I read that parsing json is really hard.
Please help!
-
possible duplicate of Serializing to JSON in jQueryoutis– outis2011年12月26日 10:23:16 +00:00Commented Dec 26, 2011 at 10:23
3 Answers 3
JSON is valid Javascript, so you can eval() it:
var data = eval(json);
However it's safer to use JSON.parse()[docs], when this function is available:
var data = JSON.parse(json);
So you could do something like this:
if (window.JSON) {
data = JSON.parse(json);
} else {
data = eval('('+json+')');
}
Note the use of parenthesis in eval(). See @CMS's comment and this.
You could also use an existing library, like this one (adds JSON.parse on browsers that do not have it).
If you are using jQuery, use $.parseJSON()[docs].
2 Comments
data = ((window.JSON&&JSON.parse)||eval)(json);, which is a little more compact.eval(json) will not work if the json string represents an object (e.g. '{"foo":"bar"}') because the first curly brace, will be interpreted as the start of a statement block, not the start of an object literal, you should do: eval('('+json+')'); to force the evaluation into an expression context. See also. Anyway another option would be to use the Function constructor, IMO it's better, since eval makes engine optimization harder, for example: Function('return '+json)();.JSON.parse() is defined in most Javascript environments these days.
Comments
try to take a look at http://www.json.org/js.html. You need something like:
var myObject = JSON.parse(myJSONtext, reviver);