2012-11-08 94 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應該是相當直接的。