如何从PHP解析json(feed)

时间:2009-09-29 22:28:19

标签: php json

我有来自zoho的json Feed:here,您可以访问未加密的here文件 我希望能够显示和解析来自该feed的数据

我昨天问了一个类似的问题,但是解决方案是一个javascript,并且java禁用客户端可能导致无法显示...所以我将使用php。我可以解析一个var而不是一个feed?....

问题#2。是否有可能捕获json提要,并将其保存为文件(用于备份目的),因此如果站点关闭(小可能性),我将访问该文件

4 个答案:

答案 0 :(得分:7)

首先必须从远程服务器获取JSON数据;不确定如何做到这一点,考虑到似乎存在身份验证机制,但可能file_get_contentscurl可能有所帮助。

一旦你在PHP变量中有了这个JSON字符串,只需要在其上调用json_decode来获取你的数据。


例如:

$json = file_get_contents('http://produits-lemieux.com/json.txt');

// you can save $json to a file, if needed :
//file_put_contents('file/path/my-file.txt', $json);

$data = json_decode($json);

var_dump($data);

会得到像这样的输出:

object(stdClass)[1]
  public 'Liste_des_produits1' => 
    array
      0 => 
        object(stdClass)[2]
          public 'Added_Time' => string '28-Sep-2009 16:35:03' (length=20)
          public 'prod_ingredient' => string 'sgsdgds' (length=7)
          public 'prod_danger' => 
            array
              0 => string 'sans danger pour xyz' (length=20)
    ....


注意我使用了“未加密”版本,因为我不知道您需要使用哪种API来访问加密的(从未使用过的“zoho”)

答案 1 :(得分:2)

json_decode默认情况下会将json字符串转换为对象形式,为了将其用作关联数组,您必须将'true'指定为第二个参数,例如下面的示例。     json_decode($ JSON,真)

参考:php Json_decode reference

答案 2 :(得分:1)

执行您想要的简化代码。

$sJson = file_get_contents('http://example.com/path/to/feed.json');
file_put_contents('/path/to/file', $sJson);
$oJson = json_decode($sJson);   
var_dump($oJson);

如果URL Wrappers已关闭或您需要身份验证标头(或其他特殊标头集),请使用curl库代替file_get_contents

答案 3 :(得分:0)

我希望能够打印/访问某些变量,但似乎无法以正确的方式访问数组

基于之前的回答:

$json = file_get_contents('http://produits-lemieux.com/json.txt');
$data = json_decode($json);
//var_dump($data);
print_r($data['prod_ingredient']); //dont work !... error 
print_r($data['Liste_des_produits1'].prod_ingredient[0]); //dont work !... error