2009-10-09 6 views
6

Pourquoi la fonction JSON.stringify convertit-elle une chaîne.Empty ("") en "null" -String? Le problème, pourquoi je n'utilise pas:Chaîne vide JSON

JSON.parse(json, function(key, value) { 
    if (typeof value === 'string') { 
     if (value == 'null') 
      return ''; 
     return value; 
    } 
}); 

... est, si quelqu'un de vraiment écrire "null" (est très peu probable, mais possible), j'ai un problème ...

merci pour chaque réponse!

+0

Quelle fonction JSON.stringify? Quel langage de programmation? (JavaScript, je suppose?) Quelle bibliothèque JSON utilisez-vous? – Jesper

+0

FireFox dit autre chose: JSON.stringify ({a: ''}); -> {"a": ""} – jantimon

+0

oui, javascript. J'utilise: http://www.json.org/json2.js @Ghommey: vous avez raison! Dans FireFox fonctionne correctement .... mais pas dans Internet Explorer .... –

Répondre

1

maintenant la solution esiest pour ce problème est, pour emballer l'expression "document.getElementById ('id') valeur." Dans le constructeur de la classe String:

JSON.stringify({a:new String(document.getElementById('id').value)}); -> {"a":""} 

je ne peux pas trouver le problème principal, mais avec cela, il fonctionne bien dans Internet Explorer ainsi que dans FireFox.

Je ne suis pas très content de cette solution sale, mais l'effort n'est pas énorme.

bibliothèque JSON: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

4

question ancienne - mais son résultat supérieur lorsque vous effectuez une recherche pour 'JSON stringify chaîne vide, donc je vais partager la réponse que je trouve. Cela semble être un bug dans certaines versions d'IE8, où les éléments DOM vides renvoient une valeur qui ressemble à une chaîne vide, évalue true par rapport à une chaîne vide, mais a en fait un codage différent indiquant qu'il s'agit d'un valeur nulle.

Une solution consiste à remplacer chaque fois que vous appelez stringify.

JSON.stringify(foo, function(key, value) { return value === "" ? "" : value });

Voir aussi http://blogs.msdn.com/b/jscript/archive/2009/06/23/serializing-the-value-of-empty-dom-elements-using-native-json-in-ie8.aspx

Questions connexes