在twig中访问已解码的json字符串值

时间:2018-01-24 10:54:15

标签: json symfony

我正在开发一个Symfony项目,需要循环遍历数据以填充表单中的已保存字段(特别是属性中的床类型数)。我将数据库中的数据保存为json字符串,如下所示:

{"2":"5","3":"0","4":"0","5":"0","6":"0","7":"0"}

此JSON遵循结构"BEDID": NUMBER OF BEDS。我实现了关于在twig中解码json的解决方案,如此处所述https://stackoverflow.com/a/14504988/5194337但我实际上无法访问已解码的json中的每个特定值。我在twig模板中使用它来解码json(基于我的数据存储在名为specifics的变量中的事实,website.id引用用户拥有的多个网站之一:

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

所以,一旦我这样做,我会尝试按如下方式访问每张床的价值:

{{ beds[standard_bed.id] }}

standard_bed是for循环中的值。但是,当我加载页面时,我收到以下错误:

  

无法访问类“stdClass”对象上的键“2”   没有实现ArrayAccess接口。

我想这意味着json的解码值在技术上不是数组,但我想不出任何其他引用每个值的方法,所以对此有所帮助。

1 个答案:

答案 0 :(得分:1)

从文档here中,您可以将其作为选项传递。请参阅选项here

您想要传递JSON_OBJECT_AS_ARRAY

  

将JSON对象解码为PHP数组。

所以基本上你想做:

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

如果要访问对象属性,可以使用attribute函数来执行此操作。