例如我的json字符串是这样的:
{
"v1" : [],
"v2": 2,
"v3": f()
}
现在我需要解码它的上下文有f
和f()
的定义,在该上下文中给出正确的答案(通过调试器检查)。但是JSON.parse(jsonstring)
给了我Unexpected token
。 eval
也会出错。我该怎么办?
查看示例Here
答案 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调用函数 - 请返回“绘图板”并设计应用程序以不使用此模式