我使用ASP.net的JavaScriptSerializer
类来序列化我的对象并将其返回给客户端。如何使用JavaScript反序列化字符串?
答案 0 :(得分:6)
如果你已经使用了jQuery,你会很高兴知道你可以用jQuery.parseJSON
解析一个JSON字符串。
如果您不使用jQuery而不想使用jQuery,则可以始终使用由JSON.parse
本身编写的精彩json_parse
或Douglas Crockford。
如果没有必要,我会avoid eval()
。
答案 1 :(得分:3)
我打算提议...... 什么都不做。这假设序列化结果是返回页面和/或其他HTML片段。
// In some JavaScript area somewhere in the ASP page
var myObject = <%= JSONIfiedObjectResult %>;
这是有效的,因为JSON是JavaScript文字的一个子集。请注意,我没有在<%= %>
附近添加引号。
如果反序列化是返回JSON等的AJAX调用的结果,那么请参阅Zack的答案。
答案 2 :(得分:0)
非常琐碎 - 只是做
var x = eval(theString);
除了ASP.Net独特的DateTime
序列化之外,除了“真正的”JSON不支持并且是ASP.Net扩展之外,它应该得到所有内容。要使用ASP.Net的反序列化器,请确保在页面中包含<asp:ScriptManager>
标记,然后调用
var x = Sys.Serialization.JavaScriptSerializer.deserialize(theString);
将调用特殊的日期处理,可能会让您获得更好的安全性。
答案 3 :(得分:0)
非常标准,不那么安全:
eval('(' + json + ')');
jQuery做的很酷的事情,仍然不是很安全:
(new Function('return ' + json))();