citemos una de las especificaciones de - http://tools.ietf.org/html/rfc7159#section-12
El La JavaScript Object Notation (JSON) Intercambio de Datos Formato Especificación estados:
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.
So todas las respuestas que indican que las funciones no son parte del estándar JSON son correctas.
La respuesta oficial es: No, no es válida para definir funciones en los resultados JSON!
La respuesta podría ser sí, porque "es el código de datos" y "datos de código es". Incluso si JSON se utiliza como un formato de serialización de datos independientes del idioma, funcionará un túnel de "código" a través de otros tipos.
cadena JSON A podría usarse para pasar una función JS para el navegador del lado del cliente para su ejecución.
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
Esto conduce a la pregunta de como: ¿Cómo a "Execute JavaScript code stored as a string".
Esté preparado, para elevar su "eval() es malo" bandera y meter la bandera de "No funciones túnel a través de JSON" al lado de él.
¿El JSON analizar con éxito por el navegador? Si es así, entonces sí es válido (en ese sentido). – harschware
@harschware: eso es cierto solo cuando JSON se relaciona con javascript. Como formato de serialización de datos independientes del idioma, es falso y es un camino problemático para caminar. – jsoverson
@jsoverson - Estoy de acuerdo. Ver mi respuesta a continuación. – harschware