Hãy trích dẫn một trong những thông số kỹ thuật - http://tools.ietf.org/html/rfc7159#section-12
Các đối tượng JavaScript Notation (JSON) Data Interchange Format Thông số kỹ thuật quốc gia:
JSON là một tập hợp con của JavaScript nhưng không bao gồm phép gán và lệnh gọi.
Vì cú pháp của JSON được mượn từ JavaScript, nên có thể sử dụng hàm "eval ()" của ngôn ngữ đó để phân tích cú pháp văn bản JSON. Điều này thường tạo thành một rủi ro bảo mật không thể chấp nhận được, vì văn bản
có thể chứa mã thực thi cùng với các khai báo dữ liệu . Việc xem xét tương tự cũng áp dụng cho việc sử dụng các hàm giống eval () trong bất kỳ ngôn ngữ lập trình nào khác trong đó các văn bản JSON tuân theo
cú pháp của ngôn ngữ đó .
Vì vậy, tất cả các câu trả lời trạng thái nào, các hàm đó không thuộc tiêu chuẩn JSON đều đúng.
Câu trả lời chính thức là: Không, không hợp lệ để xác định các hàm trong kết quả JSON!
Câu trả lời có thể là có, bởi vì "mã là dữ liệu" và "dữ liệu là mã". Ngay cả khi JSON được sử dụng như một định dạng tuần tự hóa dữ liệu độc lập với ngôn ngữ, thì việc truyền "mã" qua các kiểu khác sẽ hoạt động.
Một chuỗi JSON có thể được sử dụng để chuyển một hàm JS đến trình duyệt phía máy khách để thực thi.
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
Điều này dẫn đến câu hỏi như: Làm thế nào để " Thực thi mã JavaScript được lưu trữ dưới dạng một chuỗi ".
Hãy chuẩn bị để nâng cờ "eval () là ác" của bạn và dán cờ "không tạo đường hầm qua JSON" bên cạnh cờ đó.