0

私は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 を選択する必要があります。

私は id だけで読む必要があります。mysql コマンド . id ='3326848fdgsdfgsdf03424168'; の access_token を選択します。

4

2 に答える 2

1

まず、JSON に]文字が欠落しているため、 json_decodeNULL が返されます。最初に 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);

デモ!

于 2013-09-18T22:05:48.540 に答える
0

整形式の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'];
  }
}
于 2013-09-18T21:43:25.627 に答える