仕様の1つを引用してみましょう-http://tools.ietf.org/html/rfc7159#section-12
ザ・JavaScriptのオブジェクト表記法(JSON)データ交換フォーマット仕様の状態:
JSONはJavaScriptのサブセットですが、割り当てと呼び出しは除外されています。
JSONの構文はJavaScriptから借用されているため、その言語の「eval()」関数を使用してJSONテキストを解析できます。テキスト
にはデータ宣言とともに実行可能コードが含まれる可能性があるため、これは一般に許容できないセキュリティリスクになります。同じ考慮事項が、JSONテキストがその
言語の構文に準拠する他のプログラミング言語でのeval()のような関数の使用にも適用されます。
そのため、その関数はJSON標準の一部ではないと述べるすべての答えは正しいです。
公式の答えは次のとおりです。いいえ、JSON結果で関数を定義することは無効です!
「コードはデータである」と「データはコードである」ので、答えはイエスかもしれません。JSONが言語に依存しないデータのシリアル化形式として使用されている場合でも、他のタイプの「コード」のトンネリングは機能します。
JSON文字列を使用して、JS関数をクライアント側のブラウザに渡して実行できます。
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
これは、「文字列として保存されたJavaScriptコードを実行する方法」のような質問につながります。
「eval()is evil」フラグを立てて、「JSONを介して関数をトンネリングしない」フラグをその横に貼り付ける準備をしてください。