例如我的 json 字符串是这样的:
{
"v1" : [],
"v2": 2,
"v3": f()
}
现在我需要解码的上下文有一个定义f
并f()
在该上下文中给出正确的答案(通过调试器检查)。但是JSON.parse(jsonstring)
给我Unexpected token
。eval
也给出错误。我该怎么办?
在此处查看示例
例如我的 json 字符串是这样的:
{
"v1" : [],
"v2": 2,
"v3": f()
}
现在我需要解码的上下文有一个定义f
并f()
在该上下文中给出正确的答案(通过调试器检查)。但是JSON.parse(jsonstring)
给我Unexpected token
。eval
也给出错误。我该怎么办?
在此处查看示例
为什么它不起作用
看一下 JSON 的定义,它不能包含函数调用。
可能的解决方法
一种方法是执行类似的操作,返回要调用的函数的字符串。
{
"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 之类的回调。
JSON 字符串不能包含函数。
JSON 与 JavaScript 对象不同,尽管前者是从后者派生的。最终,它是一个字符串。
您不应该在 JSON 中使用任何回调或函数调用(它不是有效的 JSON,它不安全而且很荒谬 - 如果您以某种方式使其工作,还有最后两件事),总有办法在脚本中做到这一点。
编辑:您真的不需要从 JSON 调用函数 - 请返回“绘图板”并设计应用程序以不使用此模式