首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析JSON提要

解析JSON提要
EN

Stack Overflow用户
提问于 2015-09-22 19:01:34
回答 3查看 161关注 0票数 3

在这个NFL游戏中心JSON提要中,我很难检索到"name“、"att”、"cmp“和"yds”。使用PHP。

如果没有硬编码"2015091700“和"00-0023436”,我如何检索这些值?

gtd.json

代码语言:javascript
复制
{  
"2015091700":{  
  "home":{  
     "stats":{  
        "passing":{  
           "00-0023436":{  
              "name":"A.Smith",
              "att":25,
              "cmp":16,
              "yds":191
           }
        }
     }
  }
 }
}

这是我现在的密码。

代码语言:javascript
复制
$url  = file_get_contents("http://www.nfl.com/liveupdate/game-center/2015091700/2015091700_gtd.json");
$json = json_decode($url, true); // 'true' makes data an array
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json)); 
$player = array();

foreach($iterator as $key=>$value) {
  $player[$key] = $value;
  echo $player['name'];
}

这已经接近我需要的了。然而,这一页的内容如下:

代码语言:javascript
复制
A.Smith 
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith
J.Charles
J.Charles
J.Charles
J.Charles
J.Charles
J.Charles
J.Charles
J.Charles
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith

我不知道为什么我会得到重复的值。如何使它反映JSON提要的内容?理想情况下,我希望创建一个查询字符串,可以插入到我的MySQL数据库表中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-22 19:26:55

一种方法是使用PHP的RecursiveIteratorIterator类,它允许您遍历任何其他迭代器类,以及允许通过数组进行简单迭代的RecursiveArrayIterator类。这些都是PHP的SPL库的一部分。你可以这样使用它:

代码语言:javascript
复制
<?php
$data = '{
"2015091700":{  
  "home":{  
     "stats":{  
        "passing":{  
           "00-0023436":{  
              "name":"A.Smith",
              "att":25,
              "cmp":16,
              "yds":191
           }
        }
     }
  }
 }
}';

$json = json_decode($data, true); // 'true' makes data an array

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json)); 

foreach($iterator as $key=>$value) {
    echo $key .' '. $value . '<br />';
}

?>

结果是:

代码语言:javascript
复制
name A.Smith
att 25
cmp 16
yds 191

示例

如果您希望将单个位放入变量中,这是对代码进行小更改的最简单方法:

代码语言:javascript
复制
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json)); 

$player = array();

foreach($iterator as $key=>$value) {
    $player[$key] = $value;

}
echo $player['name'];

这使您可以描述一个球员和分配正确的键给播放器。上述结果将是:

代码语言:javascript
复制
A.Smith

现在,您可以根据需要使用玩家数据的各个部分,因为它们很容易被他们的键识别。

票数 4
EN

Stack Overflow用户

发布于 2015-09-22 19:08:39

将JSON解码为一个关联数组,然后用foreach循环它。

代码语言:javascript
复制
$data = json_decode($json, true);
foreach($data as $key=>$val){
    // $key = 2015091700
    // $val = an associative array with one row.
    // ['home' => ... ]
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-22 19:05:30

这个有用吗?

代码语言:javascript
复制
$decoded = json_decode($json,true);
var_dump($decoded['2015091700']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32724839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档