Zitieren wir eine der Spezifikationen - https://www.rfc-editor.org/rfc/rfc7159#section-12
El Die Spezifikation des Datenaustauschformats JavaScript Object Notation (JSON) Staaten:
JSON ist eine Teilmenge von JavaScript, schließt aber Zuweisung und Aufruf aus.
Da die JSON-Syntax von JavaScript entlehnt ist, ist es möglich, die die Funktion "eval()" dieser Sprache zum Parsen von JSON-Texten zu verwenden. Diese stellt im Allgemeinen eine inakzeptables Sicherheitsrisiko, da der Text
könnte ausführbaren Code zusammen mit Datendeklarationen enthalten . Die gleiche Überlegung gilt für die Verwendung von eval()-ähnlichen Funktionen in jeder anderen Programmiersprachen, in denen JSON-Texte dieser Sprache entsprechen
der Syntax der Sprache.
Alle Antworten, die besagen, dass Funktionen nicht Teil des JSON-Standards sind, sind also richtig.
Die offizielle Antwort lautet: Nein, es ist nicht zulässig, Funktionen in JSON-Ergebnissen zu definieren!
Die Antwort könnte ja lauten, denn "Code ist Daten" und "Daten sind Code". Selbst wenn JSON als sprachunabhängiges Daten-Serialisierungsformat verwendet wird, funktioniert ein Tunneling von "Code" durch andere Typen.
Ein JSON-String kann verwendet werden, um eine JS-Funktion zur Ausführung an den clientseitigen Browser zu übergeben.
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
Dies führt zu Fragen wie: Wie kann man "https://stackoverflow.com/questions/939326/execute-javascript-code-stored-as-a-string" erreichen.
Seien Sie darauf vorbereitet, Ihre "eval() ist böse"-Flagge zu hissen und Ihre "tunneln Sie keine Funktionen durch JSON"-Flagge daneben zu stecken.