JQuery 1.9.1 ne parvient pas à parsingr JSON qui contient la barre oblique inverse échappée

Question: comment utiliser javery JavascriptSerializer sur le serveur pour créer des chaînes JSON qui fonctionneront toujours avec la méthode jQuery 1.9.1 parseJSON () dans IE 9?

Sur le serveur, j’appelle JavascriptSerializer.Serialize () sur un object pour le convertir en chaîne JSON. L’object a des propriétés qui peuvent contenir une barre oblique inverse. Donc, le JavascriptSerializer prend une valeur comme celle-ci:

Has\Backslash 

Et s’échappe comme ça:

 Has\\Backslash 

Lorsque j’exécute la chaîne JSON obtenue via JsonLint, elle est validée:

 {"HasBackslash":"Has\\Backslash"} 

Et lorsque je lance ceci dans JsonLint, une erreur d’parsing s’affiche:

 {"HasBackslash":"Has\Backslash"} 

Dans IE9 / jquery 1.9.1, l’exact opposé est acceptable. Le bit Javascript créé par JavascriptSerializer sur le serveur échoue dans le navigateur avec l’erreur “Caractère non valide”:

 var HasBackslash = $.parseJSON('{"HasBackslash":"Has\\Backslash"}'); 

Mais ce peu de Javascript fonctionne très bien:

 var HasBackslash = $.parseJSON('{"HasBackslash":"Has\Backslash"}'); 

Voici un exemple complet, j’utilise 1.9.1 et IE 9.

   The Title   $(document).ready(function () { try { var NoBackslash = $.parseJSON('{"NoBackslash":"No Backslash"}'); $('#NoBackslash').text('NoBackslash parsed successfully'); } catch(err){ $('#NoBackslash').text('Error parsing NoBackslash: ' + err.message); } try { var HasBackslash = $.parseJSON('{"HasBackslash":"Has\Backslash"}'); $('#HasBackslash').text('HasBackslash parsed successfully'); } catch (err) { $('#HasBackslash').text('Error parsing HasBackslash: ' + err.message); } try { var HasEscapedBackslash = $.parseJSON('{"HasEscapedBackslash":"Has\\Backslash"}'); $('#HasEscapedBackslash').text('HasEscapedBackslash parsed successfully'); } catch(err){ $('#HasEscapedBackslash').text('Error parsing HasEscapedBackslash: ' + err.message); } });