2012-11-08 136 views
2

我一直在这里好几个小时,不能为我的生活弄清楚如何解码这个json文件。我正在使用gnip来捕获Twitter数据。 Gnip以JSON格式返回数据。我需要一种方法来解码这个在PHP中,并能够访问每个JSON对象。我之前和json一起工作过,但我无法围绕这一个思路。我简单的测试过程中遇到了一个有趣的事情是,如果我有这样的从gnip解码json与php

{"foo":123} 

一个json的代码,我可以在此使用json_decode()函数进行解码。但是,如果JSON是格式化这样

{ 

"foo":123 


} 

它不解码:/

这里是一个链接到JSON代码:如果这个环节不工作这应该

https://dl-web.dropbox.com/get/Public/myjson.json?w=b7ad8e2c

https://dl.dropbox.com/u/57604377/myjson.json

我试图像这样访问它。

我把所有的这个JSON代码的文件中,并读取该文件,并把内容到一个变量名为$ JSON 然后,

$obj = json_decode($json) 

我想这两种方法来访问“id的值“对于初学者

echo $obj->id 

echo $obj->{'id'} 

它不重打开任何东西

我希望你们中的一些聪明人能够给我一些见解。

+0

您的格式化JSON有效,并且正确解析了json_decode:http://codepad.org/HJmVMaEr –

+0

使用第二个链接中的数据json_decode也适用于我。 php 5.4.7/win32 – VolkerK

+0

什么是$ json和$ obj的var转储 –

回答

1

鉴于这种代码在一个名为json.php:

<? 
    $json = file_get_contents("php://stdin"); 

    $obj = json_decode($json); 
    var_dump($obj); 

    // Different echos go here 
?> 
在您的测试文件

而且cat'ing

cat multiline_gnip.json | php json.php 

那么下面的工作对我来说:

echo $obj->id 
echo $obj->{id} 
echo $obj->{'id'} 

将json_decode行更改为:

$obj = json_decode($json, true); 

给我回一个关联数组,然后这个工程:

echo $obj["id"] 

介意分享一些你使用解析该代码?

而对于完整性这里是我的PHP - 版本

PHP 5.3.15用了Suhosin贴片(CLI)(建:2012年8月24日17时45分44秒) 版权所有(C)1997-2012的PHP Group Zend Engine v2.3。0,版权所有(C)1998-2012 Zend技术

(声明:我工作GNIP)

0

您应该使用PHP CLI来测试你的功能&数据。 从那里发现你的bug应该是相当直接的。