无法从php中的json获取数据

时间:2019-12-10 05:58:14

标签: php json parsing

我有一个具有以下结构的json:

{
  "data":{
    .   .   .
    .   .   .
    .   .   .
  },
  "meta":{
    .   .   .
    .   .   .
    .   .   .
  },
  "included":[
    {
      .   .   .
      .   .   .
    },
    { .   .   . },
    { .   .   . },
    { .   .   . },
    .   .   .   .
    {
      "unwanted":{
        .   .   .
      },
      "unwanted2":{ .   .   . },
      .    .    .    .
      "wanted1":"v1"
      "wanted2":{
        "k1":"v2",
        "k2":"v3"
      },
      "wanted3":[
        "v4",
        "v5",
        "v6"
      ],
    },
    { .   .   .},
    .   .   .   .
  ],
}

我想要的是得到所有想要的东西。现在首先我尝试输出以下内容:

$JSON = json_decode($data, true);
echo $myJSON['included'];

现在,这将输出“ array”,表明这是一个数组。然后,我尝试了:

echo $myJSON['included']['wanted1'];

其中没有显示名为“ wanted1”的索引。我想了想,因为所有想要的东西都包含在其中的第17个元素中,所以我决定这样做:

$i=1;
foreach( $myJSON['included'] as $item ){
    if($i==17){
        echo $item['wanted1'].PHP_EOL;
    };
    $i=$i+1
};

现在这也显示相同的错误。我不知道该怎么解析。我是php新手,请帮忙。

编辑: Here is a link to json file 我想要的是“ foundedOn”,“专业”,“名称”。

1 个答案:

答案 0 :(得分:1)

如果您回显$ myJSON ['included'] [16]并得到“试图获取非对象的属性'wanted1'” 那么您实际上可以使用$ myJSON ['included'] [16] ['wanted1']

访问变量

注意 如果您使用PHP json_decode($ data,true) 它将把您的数据转换成PHP数组形式

https://www.php.net/manual/en/function.json-decode.php