包含函数调用的json字符串

json string containing function calls

本文关键字:字符串 json 函数调用 包含      更新时间:2023-09-26

例如,我的json字符串如下:

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

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

请参阅此处的示例

为什么它不起作用

看看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调用函数-请返回"绘图板"和设计应用程序,不要使用这种模式