You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Twig文件中引入外部JSON文件作为变量使用?

如何在Twig文件中引入外部JSON文件作为变量使用?

我完全懂你想把JSON数据和Twig模板分离的需求,这样确实能让代码结构更清爽~你之前尝试的{% include %}方式其实只是把JSON文件的内容当成纯字符串存到变量里了,Twig并没有自动把它解析成可直接访问的数组或对象,所以才没法像之前那样调用属性。

咱们可以通过两步解决这个问题:先读取JSON文件内容,再把字符串解析成Twig能识别的数据结构,具体方法如下:

方法一:结合include和json_decode过滤器

这种方法适合没法直接调用文件读取函数的场景:

{# 先把JSON文件内容读取为字符串 #}
{% set header_links_raw %}
    {% include "header_links.json" %}
{% endset %}

{# 把字符串解析成关联数组(保持和你原来的调用方式一致) #}
{% set header_links = header_links_raw|json_decode(constant('JSON_OBJECT_AS_ARRAY')) %}

方法二:直接读取文件并解析(更简洁)

如果你的Twig环境允许使用file_get_contents函数,可以用更短的写法,注意要填对JSON文件的正确路径:

{% set header_links = file_get_contents('header_links.json')|json_decode(constant('JSON_OBJECT_AS_ARRAY')) %}

验证使用

解析完成后,你就可以像之前一样正常调用数据了:

<ul>
{% for link in header_links.study.main_menu.menu_links %}
    <li><a href="{{ link.url }}">{{ link.title }}</a></li>
{% endfor %}
</ul>

小提示:如果希望解析后得到对象而不是数组,去掉constant('JSON_OBJECT_AS_ARRAY')参数即可,这时调用方式要改成header_links->study->main_menu->menu_links。

备注:内容来源于stack exchange,提问作者user1085587

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:12:58