eval "сериализованный объект с использованием JavaScriptSerializer ()" после удаления специальных символов - PullRequest
0 голосов
/ 27 мая 2010

Мне нужно проверить объект 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 + ")"); 

Выдает ошибку:

отсутствует} после списка свойств

Это происходит из-за специальных символов в сериализованном объекте (в FooterNotes с "и некоторых других символов между начальными и конечными кавычками) во время eval.

Как удалить специальные символы в сериализованном виде до eval?

Или как я могу получить значение SalesTaxPercentage от поискового объекта?

1 Ответ

0 голосов
/ 27 мая 2010

Я думаю, что вы можете просто удалить одинарные кавычки в первой строке и не использовать eval (userSettings будет уже объектом).

Другой способ - удвоить обратную косую черту, чтобы ваша строка оставалась в кавычках, что-то вроде этого (не проверено):

var userSettings = '<%= System.Text.RegularExpressions.Regex.Replace(
    new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewData["UserSettings"]), @"\134", "\\$0"); %>';
...