2013-06-24 51 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