PHP和JSON使用Yahoo Fantasy Sports API

时间:2012-06-18 23:19:45

标签: php json api

我正在尝试查询和解析雅虎幻想体育数据并以友好的格式显示结果。

这是我从雅虎那里获得成功请求的JSON ......

{
"fantasy_content": {
"xml:lang": "en-US",
"yahoo:uri": "\/fantasy\/v2\/users;use_login=1\/teams",
"users": {
  "0": {
    "user": [
      {
        "guid": "1234567890"
      },
      {
        "teams": {
          "0": {
            "team": {
              "team_key": "268.l.auto.t.209996",
              "team_id": "209996",
              "name": "Team Test",
              "type": "auto"
            }
          },
          "1": {
            "team": {
              "team_key": "273.l.auto.t.27741",
              "team_id": "27741",
              "name": "Team API",
              "type": "auto"
            }
          },
          "count": 2
        }
      }
    ]
  },
  "count": 1
},
"time": "29.808044433594ms",
"copyright": "Data provided by Yahoo! and STATS, LLC",
"refresh_rate": false
  }
}

我希望从团队阵列中获取团队名称。我已经尝试使用以下PHP代码(在它的无数变体中)钻取到我需要的节点,但我没有运气。

$obj=json_decode($json);
$data = $obj->fantasy_content->users->user->teams->team; 
foreach($data as $d){
echo 'name: ' . $d->name ; //prints php 
}  

我希望有人能够使用上面的JSON提供一个工作示例,因为我在此明显失败了。任何帮助将不胜感激。

提前致谢!

1 个答案:

答案 0 :(得分:0)

试试这个

$obj=json_decode($json);
$data = $obj->fantasy_content->users->{'0'}->user[1]->teams; 
foreach($data as $d){
    echo 'name: ' . $d->team->name ; //prints php 
}  

EDIT 你可以使用cout循环遍历名称

$obj=json_decode($json);
$data = $obj->fantasy_content->users->{'0'}->user[1]->teams; 
for($i = 0; $i < $data->count; $i++){
    echo 'name: ' . $data->{$i}->team->name ; //prints php 
}