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

Symfony项目中Twig访问解码后JSON值报错的解决咨询

解决Twig中JSON解码后对象无法用数组键访问的问题

嗨,这个问题我之前也碰到过!原因很简单:Twig的json_decode过滤器默认会把JSON字符串转换成stdClass对象,而不是关联数组,所以你用数组下标(比如beds[standard_bed.id])去访问对象属性就会报错——毕竟普通对象没实现ArrayAccess接口,不支持这种数组式的访问逻辑。

这里给你两种可行的解决办法:

方法一:解码时直接转为关联数组

修改你的Twig代码,在json_decode后面加上第二个参数true,这样解码后的结果就是关联数组,你原来的访问方式就能正常工作了:

{% set beds = specifics[website.id].0.standardBedTypes|json_decode(true) %}

之后再用{{ beds[standard_bed.id] }}就能正确获取对应床型的数量啦,这是最直接也最推荐的解决方案。

方法二:用对象属性的方式访问(不转数组)

如果因为某些原因你不想转换成数组,也可以通过对象属性的方式访问,但因为你的键是数字,Twig里需要用括号语法来访问:

{{ beds[standard_bed.id|string] }}

这里把standard_bed.id转成字符串是为了确保和JSON里的键格式匹配,避免类型不匹配的问题。不过这种方式不如第一种直观,只适合特殊场景下使用。

总结一下,核心就是利用json_decode的第二个参数控制返回类型,把对象转成数组后就能像你预期的那样用数组下标访问了。

内容的提问来源于stack exchange,提问作者Michael Emerson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:21:47