PHP json_encode和javascript函数

Dav*_*och 25 javascript php json

我需要在PHP中将javascript函数编码为JSON对象.

这个:

$function = "function(){}";
$message = "Hello";

$json = array(   
      'message' => $message,
      'func' => $function
);
echo json_encode($json);
Run Code Online (Sandbox Code Playgroud)

输出:

{"message":"Hello","func":"function(){}"}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

{"message":"Hello","func":function(){}}
Run Code Online (Sandbox Code Playgroud)

我可以用json_encode做到这一点吗?

Fab*_*ger 22

正如Jani所说,这不可能直接使用JSON,但这可能会对您有所帮助:http://web.archive.org/web/20080828165256/http : //solutoire.com/2008/06/12/sending-javascript-功能-过JSON /


Jan*_*nen 9

不.JSON规范不支持功能.您可以编写自己的代码以类似JSON的格式输出它,但它应该可以正常工作.


Ste*_*rig 7

如果您不想编写自己的JSON编码器,可以Zend_Json使用Zend Framework的JSON编码器.它包括处理JSON表达式的功能.


小智 5

json_decode将给定的数组解析为json字符串,因此您可以将其作为字符串使用。只需使用一些唯一的字符串来指示函数的开始和结束。然后使用str_replace删除引号。

$function = "#!!function(){}!!#"; 
$message = "Hello";

$json = array(   
  'message' => $message,
  'func' => $function
);
$string = json_encode($json);
$string = str_replace('"#!!','',$string);
$string = str_replace('!!#"','',$string);
echo $string;
Run Code Online (Sandbox Code Playgroud)

输出将是:

{"message":"Hello","func":function(){}}
Run Code Online (Sandbox Code Playgroud)