2011-01-21 7 views
0

JavaScriptSerializer ASP.netのクラスを使用してオブジェクトをシリアル化し、クライアント側に返します。 JavaScriptを使用して文字列を逆シリアル化するにはどうすればよいですか?JavaScriptを使用してJSON文字列をJSONオブジェクトに変換するにはどうすればよいですか?

+0

必須のリンク:[json.org](http://json.org) –

+0

「JSONオブジェクト」は擬似語の一種です。これはオブジェクトかJSON文字列です。両方とも同時にはありません。 –

答えて

6

、あなたはなるだろうjQuery.parseJSONでJSON文字列を解析できることを知ってうれしく思います。

jQueryを使用しておらず、使いたくない場合は、Douglas Crockford以外で書かれた素晴らしいJSON.parseまたはjson_parseをいつでも使用できます。

必要がない場合はavoid eval()となります。

+0

+1のため... 1)*他の人*が既にこの問題を解決している2)*他の人*がすでにこの問題を解決しました。良い方法。 –

+0

jQuery.parseJSON()は.Net DateTimeオブジェクトをjscriptの日付オブジェクトにシリアライズしません。代わりに、文字列に単純にデシリアライズされます。 – jlafay

+0

@jlafay JSON(JSON仕様通り)は、 'Date'オブジェクトをサポートしていません。 'jQuery.parseJSON'はJavaScriptオブジェクトに有効な' JSON'文字列を解析するので、そのフォーマットに関係なく 'Date'オブジェクトをデシリアライズすることは期待できません。 –

0

非常に簡単に - ちょうど「本物」JSONでサポートされているとASP.Netの拡張機能ですされていないDateTimeのASP.Net独自のシリアライズ、以外のすべてを取得する必要

var x = eval(theString); 

を行います。 ASP.Netのデシリアライザを使用するには、あなたがあなたのページに<asp:ScriptManager>タグを含めることを確認し、特別な日付の処理を呼び出し、おそらくあなたより優れたセキュリティを取得します

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

を呼び出します。

+0

-1代替を表示しないeval *の使用。 –

+0

@pst何ですか?代わりにそこにあります - あなたがその代替手段を使用すると、日付処理がスローされます。 –

0

ので安全ではない、かなり標準:jQueryのは、まだ、非常に安全でないことをクールなものの

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

種類:あなたはすでにjQueryのを使用している場合

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

"良い、安全な"アプローチは何でしょうか? –

+0

-1代替を表示しないeval *の使用。 –

+0

@pst 'window.JSON.parse'を使用し、IE 6または7で動作しない。 – sdleihssirhc

3

私は提案するつもりです... do nothing。これは、シリアライズされた結果がと返され、のページおよび/または追加のHTMLフラグメントのいずれかがあることを前提としています。

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

これは動作し、JSONはJavaScriptのリテラルのサブセットであるため、有効です。私は<%= %>の周りに引用符を入れなかったことに注意してください。

逆シリアル化がJSONなどを返すAJAX呼び出しの結果である場合は、Zackの答えを参照してください。

関連する問題