Как распечатать json в Smarty

Я получаю json от api, как печатать json, используя Smarty.

Формат 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} 

Пожалуйста, помогите мне решить эту проблему. благодаря

Related of "Как распечатать json в Smarty"

У вас есть 2 возможных решения.

Первое решение

в 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} 

Прежде всего, вам нужно преобразовать его в массив, тогда вам будет намного проще выполнить цикл и распечатать его

Скажем, вы получаете свой json в переменной с именем $ response

 // Convert to array {$response|json_decode} 

Теперь вы получите массив, и вы можете пропустить массив, используя {foreach}

После преобразования в массив вам будет проще выполнять цикл как foreach для массива, а не для json-вывода