Spesifikasyonlardan birini alıntılayalım - http://tools.ietf.org/html/rfc7159#section-12
JavaScript Object Notation (JSON) Veri Değişim Biçimi Şartname durumları:
JSON, JavaScript'in bir alt kümesidir ancak atama ve çağrıyı hariç tutar.
JSON'un sözdizimi JavaScript'ten ödünç alındığından, JSON metinlerini ayrıştırmak için o dilin "eval ()" işlevini kullanmak mümkündür. Metin
, veri bildirimleriyle birlikte çalıştırılabilir kod içerebileceğinden , bu genellikle kabul edilemez bir güvenlik riski oluşturur . Aynı husus, JSON metinlerinin o
dilin sözdizimine uygun olduğu diğer programlama dillerinde eval () benzeri işlevlerin kullanımı için de geçerlidir .
Dolayısıyla, hangi durumun, bu işlevlerin JSON standardının parçası olmadığı tüm yanıtlar doğrudur.
Resmi cevap: Hayır, JSON sonuçlarında fonksiyonları tanımlamak geçerli değil!
Cevap evet olabilir, çünkü "kod veridir" ve "veri koddur". JSON, dilden bağımsız bir veri serileştirme formatı olarak kullanılsa bile, diğer türler üzerinden "kod" tünellemesi çalışacaktır.
Çalıştırmak üzere istemci tarafı tarayıcıya bir JS işlevi iletmek için bir JSON dizesi kullanılabilir.
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
Bu, soruya benzer: " Dize olarak depolanan JavaScript kodu nasıl çalıştırılır ".
Hazırlıklı olun, "eval () kötüdür" bayrağınızı yükseltin ve "JSON aracılığıyla işlevleri tünelleme" bayrağını yanına yapıştırın.