我从api获得json,如何使用Smarty打印json。
Json格式[
{
"first_name": "jinu",
"last_name": "mk",
"loginid": "jinu@amt.in",
"timezone": "5.5",
"team_id": "c964ef415f157ddd99173f5b481ee1e3",
"user_type": 1,
"last_login_date": null
},
{
"first_name": "avatar second",
"last_name": "test",
"loginid": "avatar2@gmail.com",
"timezone": "5.5",
"team_id": "ec40f5feda8643135bc20be44f897b03",
"user_type": "3",
"last_login_date": null
},
{
"first_name": "avatar testing admin",
"last_name": "amt 1",
"loginid": "avatar@amt.in",
"timezone": "5.5",
"team_id": "ec40f5feda8643135bc20be44f897b03",
"user_type": 1,
"last_login_date": null
}
]
我已经尝试了下面的每一个,但它没有打印任何东西。
{foreach from=$games item=foo}
<li>{$foo.first_name}</li>
{/foreach}
请帮我解决这个问题。由于
你有两种可能的解决方案。
在PHP中使用:
$data = '[
{
"first_name": "jinu",
"last_name": "mk",
"loginid": "jinu@amt.in",
"timezone": "5.5",
"team_id": "c964ef415f157ddd99173f5b481ee1e3",
"user_type": 1,
"last_login_date": null
},
{
"first_name": "avatar second",
"last_name": "test",
"loginid": "avatar2@gmail.com",
"timezone": "5.5",
"team_id": "ec40f5feda8643135bc20be44f897b03",
"user_type": "3",
"last_login_date": null
},
{
"first_name": "avatar testing admin",
"last_name": "amt 1",
"loginid": "avatar@amt.in",
"timezone": "5.5",
"team_id": "ec40f5feda8643135bc20be44f897b03",
"user_type": 1,
"last_login_date": null
}
]';
$smarty->assign('games',$data);
在Smarty中使用:
{foreach from=$games|json_decode item=foo}
<li>{$foo->first_name}</li>
{/foreach}
然而,我不确定在这种情况下,json_decode
是在$games
上运行一次还是每次调用。
第二个解
在PHP中使用:
$data = '[
{
"first_name": "jinu",
"last_name": "mk",
"loginid": "jinu@amt.in",
"timezone": "5.5",
"team_id": "c964ef415f157ddd99173f5b481ee1e3",
"user_type": 1,
"last_login_date": null
},
{
"first_name": "avatar second",
"last_name": "test",
"loginid": "avatar2@gmail.com",
"timezone": "5.5",
"team_id": "ec40f5feda8643135bc20be44f897b03",
"user_type": "3",
"last_login_date": null
},
{
"first_name": "avatar testing admin",
"last_name": "amt 1",
"loginid": "avatar@amt.in",
"timezone": "5.5",
"team_id": "ec40f5feda8643135bc20be44f897b03",
"user_type": 1,
"last_login_date": null
}
]';
$smarty->assign('games',json_decode($data));
Smarty文件:
{foreach from=$games item=foo}
<li>{$foo->first_name}</li>
{/foreach}
我总是建议使用第二种方法,因为如果可能的话,在Smarty中你应该避免使用任何计算,而只是显示数据。
尝试如下:
{foreach from=$games item=foo}
{assign var=bar value=$foo|json_decode:1}
<li>{$bar.first_name}</li>
{/foreach}
首先你需要将其转换为数组这样你就可以更容易地循环并打印它
假设你在一个名为$response
的变量中获取json// Convert to array
{$response|json_decode}
你现在将得到一个数组,你可以使用{foreach}遍历数组
转换为数组后,您将更容易循环为数组的foreach工作,而不是json输出