Pourquoi JSON.parse échoue-t-il avec la chaîne vide?

Pourquoi:

JSON.parse(''); 

Produire une erreur?

 Uncaught SyntaxError: Unexpected end of input 

Ne serait-il pas plus logique si elle venait de revenir null ?

Comme une chaîne vide n'est pas valide JSON, il serait incorrect pour JSON.parse('') de renvoyer null car "null" est valide JSON. par exemple

 JSON.parse("null"); 

Renvoie null . Ce serait une erreur pour que JSON non valide soit également analysé à zéro.

Alors qu'une chaîne vide n'est pas valide, JSON deux guillemets est JSON valide. Cette distinction est importante.

C'est-à-dire qu'une chaîne contenant deux guillemets n'est pas la même chose qu'une chaîne vide.

 JSON.parse('""'); 

Analysera correctement (renvoyant une chaîne vide). Mais

 JSON.parse(''); 

Ne le feront pas.

Les cordes JSON minimales valides sont

L'objet vide '{}'

Le tableau vide '[]'

La chaîne qui est vide '""'

Un nombre, par ex. '123.4'

La valeur booléenne true 'true'

La valeur booléenne false 'false'

La valeur 'null'

Utilisez try-catch pour l'éviter:

 var result = null; try { // if jQuery result = $.parseJSON(JSONstring); // if plain js result = JSON.parse(JSONstring); } catch(e) { // forget about it :) } 

JSON.parse s'attend à une notation valide à l'intérieur d'une chaîne, qu'il s'agisse d'objet {} , de tableau [] , de chaîne "" ou de type de nombre (int, flotteur, double).

S'il existe un potentiel pour ce qui est d'analyser comme une chaîne vide, le développeur devrait le vérifier.

Si elle était intégrée à la fonction, elle ajouterait des cycles supplémentaires, car les fonctions intégrées devraient être extrêmement performantes, il est logique de ne pas les programmer pour la course.

Parce que '' n'est pas un objet Javascript / JSON valide. Un objet vide serait '{}'

Pour référence: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

Pour une chaîne JSON valide, au moins un "{}" est requis. Voir plus sur http://json.org/