首頁  >  文章  >  後端開發  >  如何在 PHP 中將 JSON 解析為數組或對象

如何在 PHP 中將 JSON 解析為數組或對象

Linda Hamilton
Linda Hamilton原創
2024-10-21 14:47:30888瀏覽

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 解析為數組,則需要將第二個參數 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn