JSON是将复杂数据从我的服务器端代码传递到客户端JavaScript的好方法。例如,在PHP中我可以写:
<script type="text/javascript>
var MyComplexVariable = <?= BigFancyObjectGraph.GetJSON() ?>;
DoMagic(MyComplexVariable);
</script>
这很酷,但有时你想传递的不仅仅是基本日期,比如日期甚至功能定义。有一种简单直接的方法,例如:
<script type="text/javascript>
var MyComplexVariable = {
'SimpleProperty' : 42,
'FunctionProperty' : function()
{
return 6*7;
},
'DateProperty' : new Date(989539200000),
'ArbitraryProperty' : GetTheMeaningOfLifeUniverseAndEverything()
};
DoMagic(MyComplexVariable);
</script>
这就像到目前为止我见过的所有浏览器中的魅力一样。但是根据JSON.org这样的语法是无效的。另一方面,我已经看到这种语法在很多地方使用,包括一些流行的JavaScript框架。所以......
如果我使用上述“不支持的”JSON功能,我可以预料到任何问题吗?为什么不对?
补充说明:如果我希望我的JSON被某些未知的第三方软件,或者甚至是一个不是浏览器的已知解析器所使用,那么这样的异国情调确实很可能无法正常工作不会试图嵌入它们。但我对JSON代码直接写入由Internet浏览器执行的JavaScript代码块的情况感兴趣。像上面的例子一样。
答案 0 :(得分:2)
根据JSON.org,JSON对象仅支持对象的以下值成员:
alt text http://json.org/value.gif
由于这些都不是函数,我建议不要使用它,因为正如你所说,它在规范中没有得到官方支持。
此外,当非Javascript客户端(例如Python程序)试图使用您的JSON时会发生什么?如何运行JavaScript代码?