像Facebook json PHP一样阅读JSON


read json like facebook json php

我尝试通过PHP读取JSON

{
  "data": [
    {
      "id": "3043252fsdgdf36360354", 
      "name": "name1", 
      "access_token": "CAAIf3VEtVSoBAHrVxHL16zt4H5OvwBmdfgs4F3auPE0NZBx5PmIujBAdqw0Cv4bZACXytT1O1y6FHEZA25E1aqQZD"
    }, 
    {
      "id": "3326848fdgsdfgsdf03424168", 
      "name": "name2", 
      "access_token": "CAAIf3VEtVSoBAJinePVdfgsdfgMxuY3zaj9AimaoKx7VIO9jCqZCHC6ZBixL1n6ZC72LTMn0ZB4T8rOHD27WmzbBVgvUwgspeEZD"
    }}

我尝试使用此代码

$sfgsdfg=  $json_a=json_decode($read,true);

echo  $json_a['data'][3043252fsdgdf36360354];
echo  $json_a['3043252fsdgdf36360354'][access_token];

不使用此PHP代码,我需要帮助才能阅读它

我需要选择 3043252fsdgdf36360354

的 access_token 作为回声 $json_a['data'][3043252fsdgdf36360354]['access_token'];

我只需要通过 id 读取为 . mysql 命令。 选择access_token其中 id ='3326848fdgsdfgsdf03424168';

首先,您的 JSON 缺少]字符,将导致json_decode返回 NULL。应首先更正 JSON 字符串。可以使用联机服务(如 jsonlint.com)来验证 JSON。将 JSON 字符串解码为关联数组后,只需遍历数组并检查它是否包含给定的 ID。如果是这样,您可以轻松获取相应的访问令牌。

我把它做成一个简短的小函数。您可以使用它按 ID 获取访问令牌:

$jsonArray = json_decode($str, TRUE);
function getAccessTokenFromID($id, $jsonArray) {
    foreach ($jsonArray['data'] as $k => $elem) {
        if($elem['id'] == $id) {
            $access_token = $elem['access_token'];
        }
    }
    return $access_token;
}

用法:

$myid = '3043252fsdgdf36360354';
$my_accesstoken = getAccessTokenFromID($myid, $jsonArray);

演示!

格式不正确的 json。尝试:

{
  "data": [
    {
      "id": "3043252fsdgdf36360354", 
      "name": "name1", 
      "access_token": "CAAIf3VEtVSoBAHrVxHL16zt4H5OvwBmdfgs4F3auPE0NZBx5PmIujBAdqw0Cv4bZACXytT1O1y6FHEZA25E1aqQZD"
    }, 
    {
      "id": "3326848fdgsdfgsdf03424168", 
      "name": "name2", 
      "access_token": "CAAIf3VEtVSoBAJinePVdfgsdfgMxuY3zaj9AimaoKx7VIO9jCqZCHC6ZBixL1n6ZC72LTMn0ZB4T8rOHD27WmzbBVgvUwgspeEZD"
    }
  ]
}

和 php:

$val = json_decode($read, TRUE);
echo $val['data'][0]['id'];

更新:

function find_by_id($id, $val) {
  foreach($val['data'] as $key => $obj) {
    if ($obj['id'] === $id)
      return $obj['access_token'];
  }
}