通过PHP接收外部JSON数据

时间:2014-02-05 17:54:52

标签: php json

我试图通过PHP接收外部json文件。

我正在尝试这种方式:

<?php

$json_file = file_get_contents("http://www.moonwalk.com.br/api/VitrineDeProdutos/58e903df295cbc5c4639434d4c35090d");

$json_str = json_decode($json_file, true);

$itens = $json_str->nodes;

foreach ( $itens as $e ) 
    { echo "$e->title<br>"; } 
?>

但是,它没有用。

外部文件位于: http://www.moonwalk.com.br/api/VitrineDeProdutos/58e903df295cbc5c4639434d4c35090d

任何人都可以帮助我吗?我做错了什么?

非常感谢!

4 个答案:

答案 0 :(得分:1)

$json_str是一个数组而非对象,因为您明确要求通过json_decode($json_file, true)进行投射。

$itens = $json_str['nodes'];

同样适用于$e

foreach ($itens as $e) {
    echo $e['title'] . "<br>";
}

如果您想要使用您的代码,只需从json_decode($json_file);

中删除参数即可

答案 1 :(得分:0)

尝试这种方式:

$json_file = file_get_contents("http://www.moonwalk.com.br/api/VitrineDeProdutos/58e903df295cbc5c4639434d4c35090d");

$json_str = json_decode($json_file, true);

if (!empty($json_str['nodes'])) {
    foreach ($json_str['nodes'] as $e) {
        echo $e['title'] . "<br>";
    } 
}

答案 2 :(得分:0)

试 检查php设置......

可能是由于安全问题......“ allow_url_fopen = On”

设置 php.ini

http://www.php.net/manual/en/function.file-get-contents.php

答案 3 :(得分:0)

走另一条路。您接收 JSON格式的字符串。你确定它不是

您需要

nodes - &gt; children - &gt; title

$json_file = file_get_contents("http://www.moonwalk.com.br/api/VitrineDeProdutos/58e903df295cbc5c4639434d4c35090d");
$json_array = json_decode($json_file, true);
foreach ($json_array['nodes'][0]['children'] as $node) { 
    echo $node['title'].'<br>'; 
}

输出:

Monte Seu Mix
Mix - 18 peças
Mix - 20 peças
Mix - 30 peças
Mix - 49 peças
Mix - 70 peças
Salmão ou Atum na crosta - 15 peças
Salmão ou Atum selados - 15 peças
Guiosa de frango - 5 unidades
Yakisoba Camarão ou Frutos do Mar
Yakissoba Carne ou Frango
Teppan Yaki
Hot Tradicional
Hot com Camarão à milanesa