![]() |
1
96
不。 JSON纯粹是一种数据描述语言。如上所述 http://www.json.org 它是一种“轻量级数据交换格式。”—不是一种编程语言。 每 http://en.wikipedia.org/wiki/JSON ,支持的“基本类型”有:
|
![]() |
2
16
问题在于,JSON作为一种数据定义语言,从JSON演变为一种JavaScript对象表示法。因为javascript支持JSON上的eval,所以将JSON代码放在JSON中是合法的(在这种情况下)。如果您使用JSON远程传递数据,那么我会说将方法放入JSON中是一种糟糕的做法,因为您可能没有很好地建模客户机-服务器交互。而且,当希望将JSON用作数据描述语言时,我会说,通过嵌入方法,您可能会遇到麻烦,因为一些JSON解析器是在只考虑数据描述的情况下编写的,可能不支持结构中的方法定义。 Wikipedia JSON entry 很好地说明了不在JSON中包含方法,并指出了安全问题:
|
![]() |
3
7
据我所知,这是不标准的。快速查看 http://json.org/ 证实了这一点。 |
![]() |
4
7
让我们引用一个规格- http://tools.ietf.org/html/rfc7159#section-12 这个 javascript对象表示法(JSON)数据交换格式规范 国家:
所以,所有关于函数不属于JSON标准的回答都是正确的。 官方答案是: 不,在JSON结果中定义函数是无效的! 答案可能是肯定的,因为“代码就是数据”和“数据就是代码”。 即使JSON被用作独立于语言的数据序列化格式,通过其他类型的“代码”隧道也可以工作。 可以使用JSON字符串将JS函数传递给客户端浏览器以供执行。
这就引出了这样一个问题:如何 Execute JavaScript code stored as a string “。 准备好,升起“eval()is evil”标记,并将“不要通过json隧道函数”标记贴在它旁边。 |
![]() |
5
4
不,绝对不是。 如果您使用一个合适的JSON序列化程序,它不会让您序列化这样的函数。它是有效的对象,但不是有效的JSON。不管那个网站的意图是什么,它都不会发送有效的JSON。 |
![]() |
6
3
JSON显式地排除了函数,因为它不应该是仅限javascript的数据 结构(尽管名称中有JS)。 |
![]() |
7
2
简短的回答是 不 …
看看原因:
但是
等待
…
还有很多方法可以存储你的功能 未推荐的 但仍有可能:
我们说,你可以
然后可以使用
和 埃瓦 要执行字符串函数(在执行此操作之前,请告知您广泛不建议使用eval):
|
![]() |
8
-1
尽管不建议使用eval,但它的作用是:
|
![]() |
9
-2
不要引用…
|
![]() |
10
-2
JSON中的函数表达式是完全可能的,只是不要忘记用双引号括起来。以下是从NoSQL数据库设计中获取的示例:
|
![]() |
Nana Ba · 让这个匿名内部类成为lambda 7 年前 |
![]() |
Pyram · 在Javascript中设置匿名函数的变量 7 年前 |
![]() |
dannylindquist · c#-传递匿名函数而不是连接事件 9 年前 |
![]() |
DomB · R: 使用匿名函数创建虚拟变量 9 年前 |
![]() |
Suo6613 Saxon · 特定匿名函数的用途 10 年前 |