包含函数调用的json字符串

时间:2012-07-13 13:52:33

标签: javascript json parsing

例如我的json字符串是这样的:

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

现在我需要解码它的上下文有ff()的定义,在该上下文中给出正确的答案(通过调试器检查)。但是JSON.parse(jsonstring)给了我Unexpected tokeneval也会出错。我该怎么办?

查看示例Here

3 个答案:

答案 0 :(得分: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的回调。< / p>

答案 1 :(得分:0)

JSON字符串不能包含函数。

JSON与JavaScript对象不同,即使前者源自后者。最终,它是一个字符串。

答案 2 :(得分:0)

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

编辑:你真的不需要从JSON调用函数 - 请返回“绘图板”并设计应用程序以不使用此模式