2013-08-04 54 views
4

我在我的模板文件中的以下代碼:如何解析/解碼smarty模板中的JSON對象?

{foreach from=$items item=entry} 
    <pre> 
    {$entry->nb_persons|@print_r} 
    </pre> 
{/foreach} 

輸出是(JSON字符串):

{"ip":"12.12.12.12","date":1375616434,"cartitems":["foo:1"],"company":"dsad","FirstName":"sad","LastName":"asdsad","street":"","postcode":"","city":"","country":"Andorra","phone":"456456","fax":"","email":"[email protected]","comefrom":"google","request":"","message":"sadads"}

我想打印的每個元素分隔,爲例如:

{$entry->nb_persons.company}

應該給我 - > 「DSAD」

但這不是工作,我不知道爲什麼。

+0

你是什麼意思分開? –

+0

謝謝Jhon'我的意思是隻打印上面{$ entry-> nb_persons.company} - >「dsad」的值。再次感謝... – cookie669

回答

7

JSON字符串就是字符串。要訪問它的成員,你必須從這個字符串創建數組/對象:

{foreach from=$items item=entry} 
    {* create array from JSON string*} 
    {assign var=person value=$entry->nb_persons|json_decode:1} 
    <pre> 
    {$person.company} 
    </pre> 
{/foreach} 
+0

非常感謝!好的... – cookie669

+0

@ cookie669請問爲什麼你改變了接受的答案?如果我的版本有問題,請告訴我。 –

2

我不是Smarty的專家,但我認爲你試圖訪問一個JSON字符串結構的屬性。
嘗試先解碼它到一個對象,然後訪問它。

事情是這樣的:

{foreach $items as $entry} 
    {assign var="person" value="{$entry->nb_persons|@json_decode}"} 
    <pre> 
    {$person.company} 
    </pre> 
{/foreach} 

我沒有測試它,但。

祝你好運!

+0

謝謝Slavik它的工作...... :) – cookie669