2010-05-27 10 views
0

Je dois évaluer un objet JavaScriptSerializer().eval "l'objet sérialisé utilisant JavaScriptSerializer()" après la suppression des caractères spéciaux

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

La ligne ci-dessus donne la sortie comme:

{"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!"} 

Quand j'utilise eval pour le contenu sérialisé comme:

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

Il génère une erreur:

missing } after property list

C'est à cause du caractère spécial ters dans l'objet sérialisé (dans FooterNotes avec "et quelques autres caractères entre les guillemets de début et de fin) pendant eval.

Comment puis-je supprimer les caractères spéciaux dans sérialisé avant eval?

Ou comment puis-je obtenir la valeur de SalesTaxPercentage à partir d'un objet searialisé?

+0

Avez-vous trouvé une réponse? si c'est le cas, soyez socialement responsable et affichez-le. – capdragon

Répondre

0

Je pense que vous pouvez simplement supprimer des guillemets simples dans la première chaîne et ne pas utiliser eval (userSettings sera déjà un objet).

Une autre façon est de doubler votre chaîne antislashs donc restera cité, quelque chose comme ça (non testé):

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

Le problème est que je dois obtenir la valeur de "SalesTaxPercentage", que je n'ai pas pu obtenir sans eval. Si j'utilise eval, je peux obtenir cette valeur simplement en accédant à "userSettings.SalesTaxPercentage" – Prasad

+0

Je voulais dire que vous pourriez écrire 'var userSettings = <% = new System.Web.Script.Serialization ...%>;' et alors vous pourriez obtenir cette valeur par "userSettings.SalesTaxPercentage". Il n'est pas nécessaire d'utiliser eval dans ce cas: "Puisque JSON est un sous-ensemble de JavaScript, il peut être utilisé dans la langue sans problème." – meze