7

cURL を使用して、リモートの場所 (この場合は twitch.tv) から JSON ファイルを取得するスクリプトを作成しようとしています (その部分があまり関連しているとは思わないでください。とにかく言及したほうがよいでしょう)。例として、変数に格納された後、返される JSON オブジェクトが次のようになるとします。

$json_object = {"_links":{"self":"https://api.twitch.tv/kraken/streams/gmansoliver","channel":"https://api.twitch.tv/kraken/channels/gmansoliver"},"stream":null}

「ストリーム」プロパティにアクセスし、次のコードを試しました:

<?php
    $json_object = {"_links":{"self":"https://api.twitch.tv/kraken/streams/gmansoliver","channel":"https://api.twitch.tv/kraken/channels/gmansoliver"},"stream":null}

    $json_decoded = json_decode($json_object, true);
    echo $json_decoded->stream;
?>

これを試すと、「通知: 48 行目の D:\Servers\IIS\Sites\mysite\getstream.php の非オブジェクトのプロパティを取得しようとしています」というエラーが表示されます。

json_decode() を間違って使用していますか、それとも twitch から送信されている JSON オブジェクトに何か問題がありますか?

編集:

JSON オブジェクトを取得しました。

{"access_token": "qwerty1235","refresh_token": "asdfghjkl=","scope": ["user_read"]}

を使用してデコードしようとするとjson_decode()、次のエラーが発生しますObject of class stdClass could not be converted to string。何かアドバイス?

助けてくれてありがとう

4

2 に答える 2

7

JSON を配列にデコードしています。json_decode($json_object, true); 配列を返します

array (size=2)
  '_links' => 
    array (size=2)
      'self' => string 'https://api.twitch.tv/kraken/streams/gmansoliver' (length=48)
      'channel' => string 'https://api.twitch.tv/kraken/channels/gmansoliver' (length=49)
  'stream' => null

2 番目のパラメーターを削除して次のように実行すると、json_decode($json_object)

object(stdClass)[1]
  public '_links' => 
    object(stdClass)[2]
      public 'self' => string 'https://api.twitch.tv/kraken/streams/gmansoliver' (length=48)
      public 'channel' => string 'https://api.twitch.tv/kraken/channels/gmansoliver' (length=49)
  public 'stream' => null

ドキュメントを参照してください。TRUE の場合、返されたオブジェクトは連想配列に変換されます。

于 2014-08-08T02:08:58.487 に答える