任何人都可以解释为什么
http://jsonlint.com/
和
http://jsonformatter.curiousconcept.com/
从下面的URL 1提供无效的json但不提供URL 2?它们都是相同的JSON生成代码。唯一的区别是一个是HTTP,一个是HTTP。
https://www.discussthemarket.com/dev/
JSON.parse: unexpected character at line 1 column 1 of the JSON data
以及
http://www.lambwatch.co.uk/json.htm
Valid JSON
两者都有相同的JSON生成代码,完全相同的代码,但是当我把URL放入
时http://jsonlint.com/
进行验证,https网站将返回解析错误!?
另外,当我这样做时
$json = json_decode(file_get_contents("https://www.discussthemarket.com/dev/"));
$json is NULL
然而
$json = json_decode(file_get_contents("http://www.lambwatch.co.uk/json.htm"));
$json is the object as you'd expect
任何人都可以对此有所了解吗?
答案 0 :(得分:1)
您的问题是HTTPS服务器正在向输出的开头添加UTF8 BOM字符,从而使预期的JSON响应无效。没有看到代码,不清楚为什么,但它可能是标题问题。
如果您无法在服务器端解决问题,您可以随时在另一端删除它。 Here is an example
<?php
$response = file_get_contents('https://www.discussthemarket.com/dev/');
$json = remove_utf8_bom($response);
var_dump(json_decode($json));
function remove_utf8_bom($text) {
$bom = pack('H*', 'EFBBBF');
$text = preg_replace("/^$bom/", '', $text);
return $text;
}