2009-10-09 21 views
6

¿por qué la función JSON.stringify convierte una cadena. Vacío ("") en una cadena "nula"? El problema, ¿por qué no estoy usando:Cadena vacía de JSON

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

... es decir, si alguien realmente escribir "nulo" (es muy poco probable, pero posible), tengo un problema ... a

¡gracias por cada respuesta!

+0

Qué función JSON.stringify? ¿Qué lenguaje de programación? (JavaScript, ¿supongo?) ¿Qué biblioteca JSON estás usando? – Jesper

+0

FireFox dice algo más: JSON.stringify ({a: ''}); -> {"a": ""} – jantimon

+0

sí, javascript. Yo uso: http://www.json.org/json2.js @Ghommey: ¡Tienes razón! En FireFox funciona correctamente ... pero no en Internet Explorer .... –

Respuesta

1

ahora la solución esiest para este problema es, que el paquete de "document.getElementById ('id') de valor." La expresión en el constructor de la clase String:

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

no puedo encontrar la problema principal, pero con esto, también funciona bien en Internet Explorer en Firefox.

no estoy muy contento con esta solución sucia, pero el esfuerzo no es demasiado.

biblioteca JSON: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

4

vieja pregunta - pero es el primer resultado cuando se busca 'JSON stringify cadena vacía', así que voy a compartir la respuesta que he encontrado.

Esto parece ser un error en ciertas versiones de IE8, donde los elementos DOM vacíos devuelven un valor que parece una cadena vacía, evalúa verdadero en comparación con una cadena vacía, pero en realidad tiene una codificación diferente que indica que es valor nulo.

Una solución es hacer un reemplazo cada vez que llame a stringify.

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

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