2013-06-24 85 views
0

我有一個經典的JSON問題,並且我知道很多帖子都在問...... 但是我懷疑我試圖抓取的JSON是否有正確的結構。用PHP解碼JSON文件

的文件開始這樣的:

[{ 
"time":"0-12h", 
"articles":[ 
{ 
"id":1, 
"domain_id":22, 
"title":"Hi Guys" 
} 

{ 
"id":2, 
"domain_id":17, 
"title":"Hi everyone" 
} 

] 

}] 

我已經嘗試了很多combinaison的呼應標題:

$data = json_decode($json, true); 
echo $data->articles;  

或者

echo $data->articles->title; 

或者

echo $data->articles[0]->title; 

沒有作品... :( 你能幫我嗎? 謝謝!

+0

如果文件看起來像這樣,那麼它是無效的JSON。在結束一個對象和{{從數組中開始下一個對象}之間缺少一個逗號。 –

+0

無效的JSON以 –

+1

@ØHankyPankyØ開頭:否,除了缺失的逗號之外,沒關係。 –

回答

0

$data本身是一個數組。嘗試

$data[0]->articles[0]->title; 

此外,JSON無效(在第二篇文章數組元素之前缺少一個逗號)。

+0

正如@Barmar在他的回答中提到的,'json_decode'方法的第二個參數創建了一個數組,而不是一個對象。 –

0

有一個comma,缺失

} 
, 
{ 

json_decodetrue返回一個數組

print_r($data['articles']); 

回聲$data['articles']將輸出Array

1

的第二個參數truejson_decode()意味着它的第二個參數應該cr在JSON中使用關聯數組而不是對象{}。因此,除了處理爲爆炸丸指出索引數組,你還需要使用數組語法訪問密鑰元素:

$data[0]['articles'][0]['title'] 

如果你希望能夠使用->語法,離開了第二參數或將其設置爲false

我希望JSON中缺少的逗號在轉換爲問題時是錯誤的。如果不是,您還需要首先修復創建JSON的代碼。

+0

謝謝,它完美!你說得對,錯過的逗號是我的錯。非常感謝您的解決方案:) – user2516894