0

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

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

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

在此处查看示例

4

3 回答 3

2

为什么它不起作用

看一下 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 之类的回调。

于 2012-07-13T13:54:20.450 回答
0

JSON 字符串不能包含函数。

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

于 2012-07-13T13:55:09.243 回答
0

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

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

于 2012-07-13T13:55:24.343 回答