在php

时间:2016-02-05 10:08:29

标签: php json decode

[{
    "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"
}]

这是我得到的用途,但我在使用php中的decode-function将其转换为数组时遇到了问题。这个json-string格式不正确吗?

如何生成php表或打印得很好。

非常感谢任何帮助,谢谢。

编辑:我的php版本是5.6根据JSONLint,JSON字符串似乎是有效的。我使用以下php代码从我的服务提供者($ url)获取JSON:

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

和响应标题:

连接:关闭, 内容编码:gzip, 内容长度:212, 内容类型:text / html, 日期:2016年2月6日星期六07:25:07 GMT, 服务器:nginx, 变化:接受编码,用户代理

这(Content-Encoding:gzip)是否意味着响应被压缩了?

1 个答案:

答案 0 :(得分:1)

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

UIViewController

我认为你剪切了文字,也许你的字符串不是utf-8编码的? 只要有特殊字符,json_encode()/ json_decode()就需要utf-8编码。

更新:我不确定内容编码 - 以下是有关此主题的更多信息:Transfer-Encoding: gzip vs. Content-Encoding: gzip 但是在执行json_decode()之前,您是否验证字符串是UTF-8编码的?

您可以在$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>"; 上更改资源,只输出一个非常简单的JSON字符串,例如$url."/in/?key=xxxxxxxxx" 如果json_decode现在有效,你知道它不是关于gzip的,如果它没有,你知道它不是关于UTF-8(因为字符串没有特殊的字符)。