2012-07-13 75 views
0

例如我的JSON字符串是这样的:JSON字符串函数调用

{ 
"v1" : [], 
"v2": 2, 
"v3": f() 
} 

现在,我需要解码此为ff()的定义范围内给出正确的答案在这方面(通过检查调试器)。但是JSON.parse(jsonstring)给我Unexpected tokeneval也给出错误。我该怎么办?

看到一个例子Here

+1

这不是一个JSON字符串:“F()” 。阅读http://www.json.org/ – 2012-07-13 13:54:31

回答

2

为什么它不工作

看一个JSON的definition,它不能包含函数调用。

可能的解决方法

一种方法是做这样的事情,回报你要调用的函数的字符串。

{ 
    "v1" : [], 
    "v2": 2, 
    "v3": "f" 
} 

现在当您需要访问它时,您可以调用该函数。

var myJSON = JSON.parse(jsonstring); 
var myFunctionResult = window[myJSON.v3](); //works if global variable 

其他选项是改变你的代码是如何工作的,让一个异步脚本调用[jQuery的是getScript,常规的JavaScript createElement("script")appendChild()和使用回调像JSONP一样。

+0

好吧,但我想你明白我想要的结果。请作出相应回应。 – prongs 2012-07-13 13:56:55

+0

使用可能的解决方案对其进行了更新[s]。 – epascarello 2012-07-13 14:14:46

0

JSON字符串不能包含函数。

JSON与JavaScript对象不同,即使前者是从后者派生的。最终,它是一个字符串。

+0

好的,但我想你明白我想要的结果。请作出相应回应。 – prongs 2012-07-13 13:56:15

+0

我真的认为,听听这个页面上我们所有人都在说什么 - 甚至试图在你的JSON中强制使用函数(如果你实现了它,必须从字符串中进行评估,因为JSON不能包含函数)是一个坏主意。它暗示了应用程序设计中的一个缺陷,需要加以解决。中途之家可能会在您的JSON中提及函数*名称*,而不是函数本身。 – Utkanos 2012-07-13 14:04:32

0

你不应该在JSON中使用任何回调或函数调用(它不是有效的JSON,它是不安全的,它是荒谬的 - 如果你以某种方式使它工作,最后两件事情),总有办法在脚本中执行它。

编辑:你真的不需要从JSON调用函数 - 请返回到“画板”和设计的应用程序不使用这种模式

+0

好,但我想你明白我想要的结果。请作出相应回应。 – prongs 2012-07-13 13:56:39

+0

是的,我看到你在应用程序设计中存在缺陷,在JSON中通过函数调用“修复” – SergeS 2012-07-13 14:01:25