亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 PHP 顯示 JSON 數據中的多個嵌套項

使用 PHP 顯示 JSON 數據中的多個嵌套項

PHP
鳳凰求蠱 2023-04-15 10:53:54
我正在嘗試從 PHP 中的 JSON 文件中解析一些數據?,F在,我讓它在本地工作,但是當我把它放到網站上時,我收到了警告錯誤( Warning: Invalid argument supplied for foreach() )請幫忙,我對此很陌生,并且繞著圈子閱讀并試圖弄清楚?;旧希蚁肓谐鏊小八囆g家”并包括他們的姓名、UUID 和圖像。JSON{    "items": [        {            "title": null,            "itemType": "artist",            "moreTrackingTitle": "All Artists",            "items": [                {                    "Artist": "Artist One",                    "UUID": "364226",                    "Image": "http://theurl.com",                },                {                    "Artist": "Artist Two",                    "UUID": "1513513",                    "Image": "http://theurl.com",                },                {                    "Artist": "Artist Three",                    "UUID": "214141",                    "Image": "http://theurl.com",                }            ]        },    ],    "nextPageToken": null}PHP$request = wp_remote_get( 'http://EXTERNAL-JSON-FILE' );    $body = wp_remote_retrieve_body( $request );    $data =json_decode($body, true);    foreach($data as $k1 => $v1) {        foreach($v1 as $k2 => $v2) {            foreach($v2 as $k3 => $v3) {                foreach($v3 as $artist) {                    echo $artist['Artist'];                    echo $artist['UUID'];                    echo $artist['Image'];                }            }        }    }
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

無效的 JSON

json_decode失敗(無提示)并返回,null因為這不是有效的 JSON 文檔。JSON 不允許在數組的最后一項或對象的最后列出的屬性上使用逗號。你從哪里得到這個 JSON 文檔?這是有效的 Javascript,但不是有效的 JSON。


違規行是:


                {

                    "Artist": "Artist One",

                    "UUID": "364226",

                    "Image": "http://theurl.com", <-- remove this in the other objects too

                },


                }

            ]

        }, <-- remove this

    ],

    "nextPageToken": null

}

希望你擁有這個“外部 json 文件”并且可以編輯它,否則就沒有辦法解決它。用json linter檢查你的 json 文件。


錯誤使用嵌套foreach循環

要得到你想要的東西(假設每個項目都是“藝術家”):


foreach($data["items"] as $item){

    foreach($item["items"] as $artist){

        echo $artist["Artist"];

        echo $artist["UUID"];

        echo $artist["Image"];

    }

}

你不應該foreachJSON 對象的每個屬性,只有那些是可迭代的。


附錄

這是固定的 json 文件,刪除了有問題的逗號:


{

    "items": [

        {

            "title": null,

            "itemType": "artist",

            "moreTrackingTitle": "All Artists",

            "items": [

                {

                    "Artist": "Artist One",

                    "UUID": "364226",

                    "Image": "http://theurl.com"

                },

                {

                    "Artist": "Artist Two",

                    "UUID": "1513513",

                    "Image": "http://theurl.com"

                },

                {

                    "Artist": "Artist Three",

                    "UUID": "214141",

                    "Image": "http://theurl.com"

                }

            ]

        }

    ],

    "nextPageToken": null

}

要強制 PHP 在讀取無效的 JSON 字符串時拋出異常而不是返回 null,請將 JSON_THROW_ON_ERROR 作為第四個參數傳遞:


$data = json_decode(file_get_contents("data.json"), true, 512, JSON_THROW_ON_ERROR);



查看完整回答
反對 回復 2023-04-15
  • 1 回答
  • 0 關注
  • 153 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號