如何在Symfony中解析此JSON对象

时间:2017-04-27 00:39:27

标签: php json symfony twig

JSON:

{
  "details": [
    {
      "title": "BlahBlahBlah #1",
      "session_num": "369",
      "author": "Lilyquist J",
      "tradeshow": "AACR General Meeting 2017",
      "show_details": [
        {
          "date": "April 1-5, 2017",
          "location": "Washington DC"
        }
      ]
    },
    {
      "title": "YaddaYaddaYadda #2",
      "session_num": "369",
      "author": "Lilyquist J",
      "tradeshow": "Epcon 97",
      "show_details": [
        {
          "date": "April 1-5, 1997",
          "location": "Anywhere, CA"
        }
      ]
    },
    {
      "title": "BlahBlahBlah #3",
      "session_num": "369",
      "author": "LaDuca H",
      "tradeshow": "(ACMG) 2017",
      "show_details": [
        {
          "date": "April 1-5, 2017",
          "location": "Washington DC"
        }
      ]
    }
  ]
}

Symfony控制器

 /**
     * @Route("/route", name="ag_web_route")
     * @Template()
     *
     * @return array
     */
    public function scientificPosters2Action()
    {
        $posterList = file_get_contents($this->get('kernel')->getRootDir() . '/../web/assets/api/scientific-posters.json');

        $json = json_decode($posterList, true);

        foreach ($json['details'] as $key => $value) {
            echo $value['title'];
        }

        return array(
            'json' => $json,
            'posterList' => $posterList,
        );
    }

嫩枝:

{% for title in posterList %}
    <h1> {{ title }} </h1>
{% endfor %}

上述代码的最终结果如下:

BlahBlahBlah#1YaddaYaddaYadda#2BlahBlahBlah#3

我还没能正确地进行环回,一次只能输出一个标题。它只是将所有标题一起输出到一个<h1>标签中。我在这里错过了什么?我知道$key =&gt; $value我遗失了一些东西,(就像另一个forloop?)但我还没有能够正确地解析这个......

在这里使用Symfony3。

1 个答案:

答案 0 :(得分:4)

如果您只需要标题,就可以这样:

<h1> {{ json['details']['title'] }} </h1>

如果您在我的JSON Twig article上阅读了相关内容,那可能会帮助您实现所需目标。

编辑#2

根据评论,如果for循环出现问题,您可以尝试:

{% for item in json['details'] %}
    <h1> {{ item['title'] }} </h1>
{% endfor %}

这是一个twigfiddle,显示它可以根据您的需要正确运行并指定:

https://twigfiddle.com/ua9ebs

确保使用php函数json_decode将JSON从Controller传递到twig模板,以使其正常工作。它应该是直截了当的。