2016-02-05 53 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