2011-01-21 193 views
0

我使用012.net類的ASP.net序列化我的對象並將其返回給客戶端。我怎樣才能反序列化使用JavaScript的字符串?如何使用JavaScript將JSON字符串轉換爲JSON對象?

+0

強制鏈接:[json.org](http://json.org) – 2011-01-21 04:53:03

+0

「JSON對象」是一種矛盾的說法。它可以是對象,也可以是JSON字符串。兩者都不是在同一時間。 – 2011-01-21 05:11:01

回答

0

相當瑣碎 - 只是做

var x = eval(theString); 

應該得到除ASP.Net獨特的系列化DateTime,這是不是「真正的」 JSON支持,是一個ASP.Net擴展的一切。要使用ASP.Net的解串器,請確保您包括在頁面中<asp:ScriptManager>標籤,並呼籲

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

將調用特殊的日期處理,可能讓你更好的安全性。

+0

-1使用eval * without *顯示替代選項。 – 2011-01-21 04:57:33

+0

@pst什麼?替代方案就在那裏 - 如果使用該替代方案,則會引發日期處理。 – 2011-01-21 05:16:21

0

非常標準的,不那麼安全:

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

挺酷的東西,jQuery不會,仍然不是很安全:

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

我打算提議... 什麼都不做。這假設序列化結果返回頁面和/或附加的HTML片段。

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

這工作是有效的,因爲JSON是JavaScript的文字的一個子集。請注意,我沒有在<%= %>附近引用引號。

如果反序列化是返回JSON等的AJAX調用的結果,那麼請參閱Zack的答案。

相關問題