javascript - parse - string to json
¿Por qué falla JSON.parse con la cadena vacía? (5)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cuál es el JSON mínimo válido? 8 respuestas
Por que:
JSON.parse('''');
producir un error?
Uncaught SyntaxError: Unexpected end of input
¿No sería más lógico si simplemente devuelve
null
?
Como una cadena vacía no es JSON válida, sería incorrecto que
JSON.parse('''')
devuelva
null
porque
"null"
es JSON válido.
p.ej
JSON.parse("null");
devuelve
null
Sería un error que JSON no válido también se analizara como nulo.
Mientras que una cadena vacía no es JSON válida, dos comillas son JSON válidas. Esta es una distinción importante.
Es decir, una cadena que contiene dos comillas no es lo mismo que una cadena vacía.
JSON.parse(''""'');
se analizará correctamente (devolviendo una cadena vacía). Pero
JSON.parse('''');
No lo haré.
Las cadenas JSON mínimas válidas son
El objeto vacío
''{}''
La matriz vacía
''[]''
La cadena que está vacía
''""''
Un número, por ejemplo,
''123.4''
El valor booleano verdadero
''true''
El valor booleano falso
''false''
El valor
''null''
Para una cadena JSON válida, se requiere al menos un "{}". Ver más en http://json.org/
Porque '''' no es un objeto Javascript / JSON válido. Un objeto vacío sería ''{}''
Para referencia: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
Use try-catch para evitarlo:
var result = null;
try {
// if jQuery
result = $.parseJSON(JSONstring);
// if plain js
result = JSON.parse(JSONstring);
}
catch(e) {
// forget about it :)
}
JSON.parse
espera una notación válida dentro de una cadena, ya sea objeto
{}
, matriz
[]
, cadena
""
o tipos de números (int, float, dobles).
Si existe la posibilidad de que lo que se analiza sea una cadena vacía, entonces el desarrollador debe verificarlo.
Si se integrara en la función, agregaría ciclos adicionales, ya que se espera que las funciones integradas sean extremadamente efectivas, tiene sentido no programarlas para el caso de la carrera.