Perché il formato json è necessario rispetto al normale formato di oggetti javascript?

1

Prima di rispondere, sì, so che in altre lingue non è disponibile il supporto nativo all'oggetto javascript, ma nemmeno hanno il supporto nativo per json.

Quindi non avrebbe molto più senso modificare la specifica JSON per consentire identificatori senza "" e consentire i commenti? Cose molto sensate perché non devi serializzare / deserializzare quando lavori in javascript, no?

    
posta Blub 18.02.2014 - 13:46
fonte

2 risposte

4

JSON è un formato di scambio / serializzazione dei dati. Non è un codice destinato a essere scritto dagli umani, ma la capacità di lettura umana è importante. Dati questi requisiti, JSON è il sottoinsieme più semplice di JavaScript che potrebbe funzionare.

Ad esempio, dobbiamo consentire le chiavi quotate negli oggetti. Ma se abbiamo già una sintassi quotata, non è necessario supportare anche chiavi non quotate. Allo stesso modo, JSON conosce solo "..." doppie stringhe tra virgolette, le stringhe con quotatura singola '...' non esistono.

Il risultato è che è davvero facile implementare un parser JSON (forse 20 righe con un buon generatore di parser). Non vorremmo buttar via quel vantaggio (che ha aiutato a diventare JSON così accettato. Contrasto con la complessità dell'analisi XML). Naturalmente, un'implementazione pronta per la produzione dovrebbe essere clemente in ciò che accetta.

Un cambiamento di questo tipo potrebbe essere adattato allo standard? No, perché la compatibilità all'indietro. Sentiti libero di scrivere un'implementazione JSON che accetta chiavi non quotate, ma non puoi mai emettere tale stringa, nel caso in cui il ricevitore usi un'implementazione più rigida. E poiché generi tutto il tuo JSON tramite una libreria invece di scriverlo per mano, aggiungere queste citazioni non è un onere aggiuntivo.

    
risposta data 18.02.2014 - 14:14
fonte
0

La ragione di ciò è dovuta al fatto che avresti ancora bisogno di fare una valutazione per la deserializzazione e avresti comunque dovuto in qualche modo deserializzare l'oggetto javascript in una stringa, che non funziona per impostazione predefinita. Inoltre c'è un argomento generale contro l'utilizzo di eval - in particolare per un formato di scambio, dal momento che gli oggetti javascript sono anche funzioni.

    
risposta data 18.02.2014 - 16:09
fonte

Leggi altre domande sui tag