Давайте процитируем одну из спецификаций - http://tools.ietf.org/html/rfc7159#section-12
Спецификация формата обмена данными в нотации объектов JavaScript (JSON) сообщает:
JSON является подмножеством JavaScript, но исключает присваивание и вызов.
Поскольку синтаксис JSON заимствован из JavaScript, возможно
используйте функцию eval () этого языка для разбора текстов JSON. это
обычно представляет собой неприемлемый риск для безопасности, поскольку текст
может содержать исполняемый код вместе с объявлениями данных . Такой же
рассмотрение относится к использованию eval () -подобных функций в любом
другой язык программирования, в котором тексты JSON соответствуют этому
синтаксис языка.
Таким образом, все ответы, в которых говорится, что функции не являются частью стандарта JSON, являются правильными.
Официальный ответ: Нет, определение функций в результатах JSON недопустимо!
Ответ может быть да, потому что «код - это данные» и «данные - это код».
Даже если JSON используется как независимый от языка формат сериализации данных, туннелирование «кода» через другие типы будет работать.
Строка JSON может использоваться для передачи функции JS в браузер на стороне клиента для выполнения.
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
Это приводит к следующему вопросу: Как " Выполнить код JavaScript, хранящийся в виде строки ".
Будьте готовы поднять свой флаг "eval () - зло" и поставить рядом с ним свой флаг "не туннелировать функции через JSON".