从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,但它没有打印任何东西。
{foreach from=$games item=foo}
<li>{$foo.first_name}</li>
{/foreach}
请帮我解决这个问题。谢谢
答案 0 :(得分:3)
您有两种可能的解决方案。
第一个解决方案
在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中你应该避免使用任何计算而只是显示数据。
答案 1 :(得分:2)
尝试以下方法:
{foreach from=$games item=foo}
{assign var=bar value=$foo|json_decode:1}
<li>{$bar.first_name}</li>
{/foreach}
答案 2 :(得分:1)
首先,您需要将其转换为数组,然后您可以更轻松地循环并打印它
假设您在名为$ response
的变量中获取了json// Convert to array
{$response|json_decode}
您现在将获得一个数组,您可以使用{foreach}
遍历数组转换为数组之后,您将更容易循环作为数组的foreach工作而不是json输出