Jishnu A P
Jishnu A P

Reputation: 14382

How to convert JSON string to JSON Object using JavaScript?

I use the JavaScriptSerializer class of ASP.net to serialize my object and return it to the client side. How can I deserialize the string using JavaScript?

Upvotes: 0

Views: 3908

Answers (4)

Zack The Human
Zack The Human

Reputation: 8481

If you're using jQuery already, you'll be happy to know that you can parse a JSON string with jQuery.parseJSON.

If you aren't using jQuery and don't want to, you can always use the wonderful JSON.parse or json_parse, written by none other than Douglas Crockford himself.

I would avoid eval() if it isn't necessary.

Upvotes: 6

user166390
user166390

Reputation:

I am going to propose ... do nothing. This assumes the serialized result is returned with the page and/or an additional HTML fragment.

// In some JavaScript area somewhere in the ASP page
var myObject = <%= JSONIfiedObjectResult %>;

This works and is valid because JSON is a subset of JavaScript literals. Note that I did not put quotes around the <%= %>.

If the de-serialization is the result on an AJAX call returning JSON, etc, then see Zack's answer.

Upvotes: 3

sdleihssirhc
sdleihssirhc

Reputation: 42496

Pretty standard, not so safe:

eval('(' + json + ')');

Kind of cool thing that jQuery does, still not very safe:

(new Function('return ' + json))();

Upvotes: 0

Jeffrey Hantin
Jeffrey Hantin

Reputation: 36494

Pretty trivial -- just do

var x = eval(theString);

which should get everything except ASP.Net's unique serialization of DateTime, which is not supported by "real" JSON and is an ASP.Net extension. To use ASP.Net's deserializer, make sure you include an <asp:ScriptManager> tag in your page, and call

var x = Sys.Serialization.JavaScriptSerializer.deserialize(theString);

which will invoke the special Date handling and probably get you better security.

Upvotes: 0

Related Questions