Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON结果获取到PHP数组中。怎样_Php_Json - Fatal编程技术网

将JSON结果获取到PHP数组中。怎样

将JSON结果获取到PHP数组中。怎样,php,json,Php,Json,这就是我所尝试的: $doc = new DOMDocument(); $jsonurl = "http://v1.syndication.nhschoices.nhs.uk/.json?apikey=xxxxxx"; $doc->load($jsonurl); var_dump(json_decode($doc)); var_dump(json_decode($doc, true)); 对于2个var_转储,输出为NULL 从url返回的JSON如下所

这就是我所尝试的:

$doc = new DOMDocument();

    $jsonurl = "http://v1.syndication.nhschoices.nhs.uk/.json?apikey=xxxxxx";
    $doc->load($jsonurl);
    var_dump(json_decode($doc));
    var_dump(json_decode($doc, true));
对于2个var_转储,输出为NULL

从url返回的JSON如下所示(在查看源代码之后):


这是否有效?

如果该URL返回JSON字符串,则不应使用类来加载它:该类用于处理XML数据


相反,您可能应该这样做,使用来执行HTTP请求,并获得其原始结果:

$url = 'http://v1.syndication.nhschoices.nhs.uk/.json?apikey=xxxxxx';
$json_string = file_get_contents($url);
$data = json_decode($json_string);
var_dump($data);

附带说明:使用
file\u get\u contents()
发出HTTP请求仅在启用时有效


如果未启用
allow\u url\u fopen
,则必须准备回退到基于的解决方案。

您试图以某种方式解码
DOMDocument
<代码>json_解码对字符串有效。DOM文档和JSON字符串之间的关系是什么?一点也不。挑一个

http://v1.syndication.nhschoices.nhs.uk/.json
我认为你的网址是无效的
/.json
可能应该是
/something.json
或者
/json

@Pascal MARTIN

稍加修改即可工作:

$jsonurl = 'http://v1.syndication.nhschoices.nhs.uk/.json?apikey=XXXXXX';
$jsonstr = json_encode(file_get_contents($jsonurl));
$data = json_decode($jsonstr);
var_dump(json_decode($data));
我在文件获取内容调用中添加了json编码。
谢谢大家的帮助:)

var_转储($doc)输出的是什么。它是有效的json吗?为什么要将json加载到DOMDocument中?JSON!=只需输入JSON,它就被证明是有效的:/-1为什么这是无效的?这是完全正确的。e、 g.
.htaccess
。Windows给你洗脑,让你认为每个文件都必须是“file.ext”,这根本不是真的。你为什么认为你应该亲自攻击我?如果我不正确,请给我一些信息。顺便说一下,我没有使用windows。我没有亲自攻击你。我做了一个观察。除了通过广泛的Windows洗脑,没有理由认为这个URL是无效的。如果不是Windows让你相信一个文件在一个句点之前必须有字符,那么我无法想象它是什么!它可以工作-出于安全原因,我已经删除了apikey。它们还提供XML格式的数据,例如xhtml+XML和text/html。@JohnnyBizzle好的,我的错@托马克,你的例子是矛盾的,htaccess不能从浏览器访问。你对洗脑感到悲伤,我认为(用我洗脑的大脑)这不是一种恭维。你对我一无所知,所以你只是在猜测。而且我只是想帮忙,我学到了一些我不知道的东西。我同意你的技术部分,但你的态度不好。经验使我相信,点文件是无法从网络上访问的,现在我知道了正确的状态。吻我的宝贝,不要对生活如此沮丧:)如果在这之后它仍然不起作用,那是因为php的json编码和解码非常挑剔。在将json传递到json_decode之前,您可能需要重构json。是的,它需要有效的json(这是正确的)。检查一下。检查过的php信息:allow\u url\u fopen Local:On,Master:On这似乎是错误的
json_encode
将数组或对象作为输入,而不是字符串。数据的var_转储返回一个对象。仍然在琢磨如何到达元素!
$jsonurl = 'http://v1.syndication.nhschoices.nhs.uk/.json?apikey=XXXXXX';
$jsonstr = json_encode(file_get_contents($jsonurl));
$data = json_decode($jsonstr);
var_dump(json_decode($data));