ホームページ  >  記事  >  バックエンド開発  >  PHP で JSON を配列またはオブジェクトとして解析する方法

PHP で JSON を配列またはオブジェクトとして解析する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-21 14:47:30884ブラウズ

How to Parse JSON as an Array or Object in PHP

PHP を使用した JSON の解析

JSON は、Web アプリケーションと API の間でデータを交換するためによく使用される一般的なデータ形式です。 PHP では、json_decode() 関数を使用して、JSON 文字列を PHP 配列またはオブジェクトに解析できます。

JSON をオブジェクトとして解析するには、$json = json_decode($data) 構文を使用するだけです。結果のオブジェクトには、ドット表記を使用してアクセスできます。

ただし、JSON を配列として解析する場合は、2 番目の引数 true を json_decode() 関数に渡す必要があります。これにより、キーがプロパティ名、値が対応する値である連想配列が返されます。

例として次の JSON データを考えてみましょう:

{
    "kind": "shopping#products",
    "etag": "\"T9uPnY2MZMB71TDpKXXZdr3yWX4/qtJ5vmpftFWNfijyLD9ti2Xpj-w\"",
    "id": "tag:google.com,2010:shopping/products",
    "selfLink": "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&q\u003dsony&maxResults\u003d3&startIndex\u003d2",
    "nextLink": "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&q\u003dsony&maxResults\u003d3&startIndex\u003d5",
    "previousLink": "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&q\u003dsony&maxResults\u003d3&startIndex\u003d1",
    "totalItems": 633694,
    "startIndex": 2,
    "itemsPerPage": 3,
    "currentItemCount": 3,
    "items": [
        {
            "kind": "shopping#product",
            "id": "tag:google.com,2010:shopping/products/1161353/11882813508247586172",
            "selfLink": "https://www.googleapis.com/shopping/search/v1/public/products/1161353/gid/11882813508247586172",
            "product": {
                "googleId": "11882813508247586172",
                "author": {
                    "name": "Buy.com",
                    "accountId": "1161353"
                },
                "creationTime": "2011-04-24T05:13:38.000Z",
                "modificationTime": "2011-08-05T17:45:24.000Z",
                "country": "US",
                "language": "en",
                "title": "Sony BRAVIA KDL-46EX720 46 inch 3D LED HDTV 1080p 120Hz",
                "description": "Entertainment lovers the slim Sony EX720-Series LED HDTV is for you. See precise motion detail plus watch your favorite 2D or 3D entertainment in clear, vivid Full HD 1080p picture quality with incredible contrast. You can even connect to the internet and access a great selection of online entertainment with Netflix , Hulu Plus , Pandora , Qriocity and more - there s always something on. Plus video chat with friends and family when you Skype on the big screen.",
                "link": "http://clickfrom.buy.com/default.asp?adid\u003d17902&sURL\u003dhttp%3A%2F%2Fwww.buy.com%2Fprod%2Fsony-bravia-kdl-46ex720-46-3d-led-hdtv-1080p-120hz%2Fq%2Fsellerid%2F10004001%2Floc%2F111%2F219891693.html",
                "brand": "Sony",
                "condition": "new",
                "gtin": "00027242817081",
                "gtins": [
                    "00027242817081"
                ],
                "inventories": [
                    {
                        "channel": "online",
                        "availability": "inStock",
                        "price": 1348.0,
                        "currency": "USD"
                    }
                ],
                "images": [
                    {
                        "link": "http://ak.buy.com/PI/0/1000/219891693.jpg"
                    }
                ]
            }
        }
    ]
}

この JSON を次のように解析するには配列の場合は、次の構文を使用します:

<code class="php">$json = json_decode($data, true);</code>

これにより、次の配列が返されます:

[
    "kind" => "shopping#products",
    "etag" => "\"T9uPnY2MZMB71TDpKXXZdr3yWX4/qtJ5vmpftFWNfijyLD9ti2Xpj-w\"",
    "id" => "tag:google.com,2010:shopping/products",
    "selfLink" => "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&amp;q\u003dsony&amp;maxResults\u003d3&amp;startIndex\u003d2",
    "nextLink" => "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&amp;q\u003dsony&amp;maxResults\u003d3&amp;startIndex\u003d5",
    "previousLink" => "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&amp;q\u003dsony&amp;maxResults\u003d3&amp;startIndex\u003d1",
    "totalItems" => 633694,
    "startIndex" => 2,
    "itemsPerPage" => 3,
    "currentItemCount" => 3,
    "items" => [
        [
            "kind" => "shopping#product",
            "id" => "tag:google.com,2010:shopping/products/1161353/11882813508247586172",
            "selfLink" => "https://www.googleapis.com/shopping/search/v1/public/products/1161353/gid/11882813508247586172",
            "product" => [
                "googleId" => "11882813508247586172",
                "author" => [
                    "name" => "Buy.com",
                    "accountId" => "1161353"
                ],
                "creationTime" => "2011-04-24T05:13:38.000Z",
                "modificationTime" => "2011-08-05T17:45:24.000Z",
                "country" => "US",
                "language" => "en",
                "title" => "Sony BRAVIA KDL-46EX720 46 inch 3D LED HDTV 1080p 120Hz",
                "description" => "Entertainment lovers the slim Sony EX720-Series LED HDTV is for you. See precise motion detail plus watch your favorite 2D or 3D entertainment in clear, vivid Full HD 1080p picture quality with incredible contrast. You can even connect to the internet and access a great selection of online entertainment with Netflix , Hulu Plus , Pandora , Qriocity and more - there s always something on. Plus video chat with friends and family when you Skype on the big screen.",

以上がPHP で JSON を配列またはオブジェクトとして解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。