如何用smarty生成json?

Sin*_*nan 16 php json smarty

在Smarty中,有没有标准函数或从数组生成json的简单方法,就像json_encode()在php中一样?实际上似乎没有聪明的文档,但无论如何都想问.

谢谢,思南.

Tom*_*igh 76

这应该工作.@使smarty对整个数组运行修饰符,否则它为每个元素执行.

{$myarray|@json_encode}
Run Code Online (Sandbox Code Playgroud)

如果启用了$ escape_html,则需要使用nofilter:

{$myarray|@json_encode nofilter}
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案. (3认同)

m_k*_*kis 10

虽然{$myarray|@json_encode}实际上发出了以json编码的数组,但它也会转义特殊字符,使得数组在javascript中无法使用.

为了避免转义特殊字符并且还能够在javascript中使用数组,请使用nofilter标志:

{$myarray|@json_encode nofilter}
Run Code Online (Sandbox Code Playgroud)


小智 6

您必须json_encode()在 php 代码中使用,然后使用$smarty->assign()函数将值分配给 smarty 。之后,您必须使用 javascript 解析模板文件中的该值。

代码片段:

{literal}
<script>
var json = JSON.parse('{/literal}{$your_json_encoded_array}{literal}');
//another statement
</script>
{/literal}
Run Code Online (Sandbox Code Playgroud)