Por que:
JSON.parse('');producir un error?
Uncaught SyntaxError: Unexpected end of input ¿No sería más lógico si simplemente devolviera null ?
EDITAR: Esto no es un duplicado de la pregunta vinculada. Si bien el tema de json válido mínimo está relacionado con esta pregunta, no llega al "por qué".
Como una cadena vacía no es un JSON válido, sería incorrecto que JSON.parse('') devuelva un null porque "null" es un 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.
Si bien una cadena vacía no es JSON válido, dos comillas son JSON válidos. 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('""');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'
Usa 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 object {} , array [] , string "" o tipos de números (int, float, doubles).
Si existe la posibilidad de que lo que se está analizando sea una cadena vacía, el desarrollador debe comprobarlo.
Si estuviera integrado en la función, agregaría ciclos adicionales, dado que se espera que las funciones integradas sean extremadamente eficientes, tiene sentido no programarlas para el caso de carrera.