0

私が見つけることができるすべての記事を読んだ後、jsonデータが有効かどうか疑問に思っています。

私はこのリクエストを行うためにphpを使用しています:

$myjson= file_get_contents('http://slhassall.rightboatexpert.com/api/boats');
 var_dump(json_decode($myjson));

これにより、以下がページにダンプされますが、有効なjsonですか?

object(stdClass)[1]

  public 'pagination' =>

    object(stdClass)[2]

      public 'total' => int 32

      public 'num_per_page' => int 25

      public 'page' => int 1

  public 'results' => 

    array (size=25)

      0 => 

        object(stdClass)[3]

          public 'id' => int 54

          public 'manufacturer' => string 'Utrecht' (length=7)

          public 'condition' => string 'used' (length=4)

          public 'model' => string 'Iron Sailing Barge' (length=18)

          public 'marketing_status' => string 'For Sale' (length=8)

          public 'year' => null

          public 'stock_number' => null

          public 'location' => string 'Suffolk' (length=7)

          public 'description' => string 'Clipper design. Built in Utrecht 1988, 25m in

length, an elegantly converted Dutch sailing barge with fantastic internal and external

 social entertainment /display spaces. Suitable for corporate or pri' (length=201)

          public 'sale_status' => string 'For Sale' (length=8)

          public 'price' => int 149000

          public 'currency' => string 'GBP' (length=3)

          public 'thumbnail' => string '/api/images/262' (length=15)

          public 'boat_image_id' => int 262

      1 => 

        object(stdClass)[4]

          public 'id' => int 51

          public 'manufacturer' => string ' Wood' (length=5)

          public 'condition' => string 'used' (length=4)

          public 'model' => string 'MFV/Guard vessel ' (length=17)

          public 'marketing_status' => string 'For Sale' (length=8)

          public 'year' => int 1959

          public 'stock_number' => null

          public 'location' => string 'Great Yarmouth, Norfolk UK' (length=26)

          public 'description' => string '' (length=0)

          public 'sale_status' => string 'For Sale' (length=8)

          public 'price' => int 35000

          public 'currency' => string 'GBP' (length=3)

          public 'thumbnail' => string '/api/images/219' (length=15)

          public 'boat_image_id' => int 219

      2 => 

ノードに接続しようとすると、次のようになります。

 $array = (json_decode($myjson));
    echo $array->boat->manufacturer;

次のエラーが表示されます。

Notice: 未定義のプロパティ: C:\wamp\www\json\index.php の 6 行目の stdClass::$boat

注意: 6 行目で C:\wamp\www\json\index.php の非オブジェクトのプロパティを取得しようとしています

6 行目は echo ステートメントです。これらのエラー コードを Google で検索しましたが、わかりません。

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

1

無効なJSON は返されるため、JSON は有効 ですNULL: http://php.net/manual/en/function.json-decode.php後でオブジェクトにアクセスし、非オブジェクトのプロパティにアクセスしていることがわかった場合(つまり)
json_decodeNULL

オブジェクトがそのように構造化されていないため、エラーが発生します-あなたが言ったように、結果のオブジェクトにvar_dumpはプロパティがありません。boat

からvar_dump、オブジェクトには と の 2 つのプロパティがあることを意味しpaginationますresults。に resultsは、25 項目からなる配列があります。id各項目には、manufacturer、などのプロパティを持つオブジェクトがありますcondition

そして、実際、あなたの質問にはJSONが含まれてvar_dumpいません.phpはJSONを提供しません...

何がしたいのかわからない。各ボートのすべてのメーカーを印刷したいので... (未テスト)

$object = json_decode($myjson);
if ($object == null) {
    // json is invalid, or $myjson actually contains NULL
} else {
    $array = $object->results;

    foreach ($array as $item) {
        echo $item->manufacturer;
    }
}
于 2012-11-30T12:33:36.077 に答える
0

この JSON は有効ですが、ルートにないアイテムにアクセスしようとしています。返されるオブジェクトには、ルートに「ファセット」、「ページネーション」、および「結果」がありますが、「ボート」はありません

サファリで解析した結果は次のとおりです。

Safari で解析された json のスクリーンショット

于 2012-11-30T12:35:00.967 に答える