Php 如何使用smarty生成json?

Php 如何使用smarty生成json?,php,smarty,json,Php,Smarty,Json,在Smarty中,是否有一个标准函数或一种从数组生成json的简单方法,就像php中的json\u encode()那样 我在Smarty文档中看不到它,想在这里问一下。我不知道有什么。您可以使用$smarty->assign(…)将json_encode()的结果分配给“php代码”中的smarty变量,然后在模板中使用它 还有一个Smarty for json_decode()。基于此,为相反的对象编写自己的扩展应该不难。这应该是可行的。@使smarty对整个数组运行修饰符,否则会对每个元素

在Smarty中,是否有一个标准函数或一种从数组生成json的简单方法,就像php中的
json\u encode()
那样


我在Smarty文档中看不到它,想在这里问一下。

我不知道有什么。您可以使用$smarty->assign(…)将json_encode()的结果分配给“php代码”中的smarty变量,然后在模板中使用它


还有一个Smarty for json_decode()。基于此,为相反的对象编写自己的扩展应该不难。

这应该是可行的。@使smarty对整个数组运行修饰符,否则会对每个元素运行修饰符

{$myarray|@json_encode}
如果启用,则需要使用
nofilter

{$myarray|@json_encode nofilter}
{$myarray|@json_encode nofilter}

您必须在php代码中使用
json\u encode()
,然后使用
$smarty->assign()
函数。之后,您必须使用 javascript

代码段:

{literal}
<script>
var json = JSON.parse('{/literal}{$your_json_encoded_array}{literal}');
//another statement
</script>
{/literal}
{literal}
var json=json.parse(“{/literal}{$your_json_encoded_array}{literal}”);
//另一项声明
{/literal}

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

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

{literal}
{/literal}

我的解决方案

Smarty毕竟被翻译成了PHP。。。那么为什么不保存一个步骤,对吗?:)@所有的要求都是由我们工作的公司制定的,而不仅仅是像我们这样的凡人。处理像你这样的评论比那些要求更糟糕。干杯。我以为会有类似{$var| json|u encode}的方法,谢谢。我不知道@modifier!这就回答了问题。请注意,要传递args,您需要数值。也就是说,JSON_UNESCAPED_斜杠是64。因此,
{$myarray |@json_encode:64 nofilter}
将使斜杠未转义。此save my day:)仅当Smarty类的$escape\u html设置为true时,此选项才适用。我的意思是,如果你做得对的话,应该是这样,但仍然是这样。
{literal}
<script type="text/javascript">
<!--
var newVar ={/literal}{$myarray|@json_encode nofilter};{literal}
// -->
</script>
{/literal}