Let citare uno delle specifiche del - http://tools.ietf.org/html/rfc7159#section-12
Il La JavaScript Object Notation (JSON) Data Interchange Formato Specifica Stati:
JSON is a subset of JavaScript but excludes assignment and invocation.
Since JSON's syntax is borrowed from JavaScript, it is possible to use that language's "eval()" function to parse JSON texts. This generally constitutes an unacceptable security risk, since the text
could contain executable code along with data declarations. The same consideration applies to the use of eval()-like functions in any other programming language in which JSON texts conform to that
language's syntax.
Quindi tutte le risposte che dichiarano, che le funzioni non fanno parte dello standard JSON sono corrette.
La risposta ufficiale è: No, non è valido per definire le funzioni nei risultati JSON!
La risposta potrebbe essere sì, perché "il codice è di dati" e "i dati è il codice". Anche se JSON viene utilizzato come formato di serializzazione dei dati indipendente dalla lingua, funzionerà un tunneling di "codice" tramite altri tipi.
Una stringa JSON può essere utilizzata per passare una funzione JS al browser lato client per l'esecuzione.
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
Questo porta a mettere in discussione come: come "Execute JavaScript code stored as a string".
Preparatevi, per aumentare la vostra bandiera "eval() è male" e attaccate la bandiera "non traforo attraverso JSON" accanto ad essa.
fonte
2015-01-05 13:14:26
ha fatto il JSON analizzare correttamente dal browser? Se è così allora sì è valido (in tal senso). – harschware
@harschware: è vero solo se JSON si riferisce a javascript. Essendo un formato di serializzazione dei dati indipendente dalla lingua, è falso ed è una strada problematica da percorrere. – jsoverson
@jsoverson - Sono d'accordo. Vedi la mia risposta qui sotto. – harschware