7

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!

asked Sep 4, 2011 at 19:27
1

3 Answers 3

11

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].

answered Sep 4, 2011 at 19:29
Sign up to request clarification or add additional context in comments.

2 Comments

You could also use 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)();.
3

JSON.parse() is defined in most Javascript environments these days.

answered Sep 4, 2011 at 19:30

Comments

1

try to take a look at http://www.json.org/js.html. You need something like:

var myObject = JSON.parse(myJSONtext, reviver);
answered Sep 4, 2011 at 19:32

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.