Процитуємо одну із специфікацій - http://tools.ietf.org/html/rfc7159#section-12
JavaScript Object Notation (JSON) Interchange Формат даних Специфікація стану:
JSON - це підмножина JavaScript, але виключає призначення та виклик.
Оскільки синтаксис JSON запозичений з JavaScript, для розбору текстів JSON можна використовувати функцію "eval ()" цієї мови. Це, як правило, становить неприйнятний ризик безпеки, оскільки текст
може містити виконуваний код разом із деклараціями даних . Це ж рішення стосується використання функцій, подібних eval (), у будь-якій іншій мові програмування, в якій тексти JSON відповідають
синтаксису цієї мови.
Отже всі відповіді про те, які стан, що функції не входять до стандарту JSON, є правильними.
Офіційна відповідь: Ні, невірно визначати функції в результатах JSON!
Відповідь може бути так, оскільки "код - це дані" та "дані - код". Навіть якщо JSON використовується як незалежний від мови формат серіалізації даних, тунелювання «коду» через інші типи буде працювати.
Рядок JSON може бути використаний для передачі функції JS браузеру на стороні клієнта для виконання.
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
Це призводить до таких питань, як: " Виконати код JavaScript, збережений як рядок ".
Будьте готові підняти свій прапор "eval () is evil" і поруч із ним встановити прапор "не тунель через JSON".