2016-02-05 50 views
-1
[{ 
    "ID": 1, 
    "datum": "2016-02-04 14:20:59", 
    "nummer": "+467123123951", 
    "text": "Svar..." 
}, { 
    "ID": 2, 
    "datum": "2016-02-05 10:11:36", 
    "nummer": "+467123123951", 
    "text": "BLOOG STOPP" 
}] 

這是我得到的respose,但我有問題將其轉換爲解碼函數在php中的數組。這是json-string格式不正確嗎?在php中生成表格或漂亮的json打印

我該如何生成一個php表格或者很好地打印它。

將不勝感激任何幫助,謝謝。

編輯:我的PHP版本是5.6根據JSONLint JSON字符串似乎是有效的。

$in=file_get_contents($url."/in/?key=xxxxxxxxx"); 
$json = json_decode($in); 
echo json_encode($json, JSON_PRETTY_PRINT); 

和響應頭:

連接:關閉, 內容編碼:gzip, 的Content-Length我從我的服務提供商($網址),用下面的PHP代碼獲得JSON :212, 的Content-Type:text/html的, 日期:星期六,2016年2月6日7時25分07秒GMT, 服務器:nginx, 各不相同:接受編碼,用戶代理

這是否(內容-Encoding:gzip)表示響應是壓縮的d?

+0

取決於你可能能夠使用'json_decode($ data,JSON_PRETTY_PRINT);'〜從php v5.4開始可用的PHP版本 – RamRaider

+2

響應是無效的JSON。 'ID','datum',...這些鍵也必須用雙引號括起來''' –

+1

有很好的在線JSON驗證器,例如[JSONLint](http://jsonlint.com) – Trix

回答

1

您的JSON示例有效。 json_decode()的作品在我的例子:

$json = '[{ "ID": 1, "datum": "2016-02-04 14:20:59", "nummer": "+467123123951", "text": "Svar..." }, { "ID": 2, "datum": "2016-02-05 10:11:36", "nummer": "+467123123951", "text": "BLOOG STOPP" }]'; 

echo "<pre>"; 
print_r(json_decode($json)); 
echo"</pre>"; 

,因爲我認爲你砍的文字,也許你的字符串不是UTF-8編碼? 只要有特殊字符,json_encode()/ json_decode()就需要utf-8編碼。

更新:我不知道的內容編碼 - 這裏是有關這個主題的一些進一步的信息:Transfer-Encoding: gzip vs. Content-Encoding: gzip 但是你驗證字符串是UTF-8進行json_decode之前編碼()?

你可以改變你的資源上$url."/in/?key=xxxxxxxxx"只是輸出像[{ "ID": 1, "text": "test"}] 如果json_decode現在的作品你知道它不是gzip的,如果它不很簡單的JSON字符串,你知道它不是UTF-8(作爲字符串沒有特殊的字符)。

+0

是的,謝謝。我的代碼得到了完全相同的響應。所以我意識到其他的錯誤。我使用php函數file_get_contents(url)得到了json-string響應。 json_decode響應 – user1450458

+0

無法解碼!每個JSON都必須使用json_decode函數進行解碼。由於JSON在JSON Lint中驗證,所以在代碼中沒有任何錯誤,您犯的是一個愚蠢的錯誤。 ! –

+0

你可能是對的。我已經更新了我的帖子。 – user1450458