0

JavaScriptSerializer() オブジェクトを評価する必要があります。

var userSettings = '<%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewData["UserSettings"]) %>';

上記の行は次のように出力します。

{"SalesTaxPercentage":7.75,"StartOfWeek":"SUNDAY","NoofRowsInList":10,"ShowDashboardEntry":5,"DisplayContactsFormat":"LastName, FirstName","FooterNotes":""When you look good, you feel good...when you feel good, your attitude changes...and attitude is everything!"

You are the heart of my business....THANK YOU!"}

次のようなシリアル化されたコンテンツに eval を使用する場合:

userSettings = eval("(" + userSettings + ")"); 

エラーがスローされます:

プロパティ リストの後に } がありません

これは、eval 中のシリアル化されたオブジェクト (FooterNotes の " および開始引用符と終了引用符の間にあるその他の文字) の特殊文字が原因です。

評価前にシリアル化された特殊文字を削除するにはどうすればよいですか?

SalesTaxPercentageまたは、シリアル化されたオブジェクトから値を取得するにはどうすればよいですか?

4

1 に答える 1

0

最初の文字列の単一引用符を削除し、evalを使用しないでください(userSettingsすでにオブジェクトになります)。

もう1つの方法は、バックスラッシュを2倍にして、文字列が引用符で囲まれたままになるようにすることです。次のようになります(テストされていません)。

var userSettings = '<%= System.Text.RegularExpressions.Regex.Replace(
    new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewData["UserSettings"]), @"\134", "\\$0"); %>';
于 2010-05-27T16:45:58.343 に答える