Loading... # php如何解析JSON數據 [月夢工作室](https://moondream.blog.csdn.net/ "月夢工作室")已于 2022-04-21 10:18:15 修改6656[**收藏****11**]() **分類專欄:** [計算機](https://blog.csdn.net/weixin_51173317/category_11597803.html) **文章標簽:** [php](https://so.csdn.net/so/search/s.do?q=php&t=all&o=vip&s=&l=&f=&viparticle=) [版權]() [計算機**專欄收錄該內容**](https://blog.csdn.net/weixin_51173317/category_11597803.html "計算機") 25 篇文章0 訂閱 [訂閱專欄]() php如何解析JSON數據?本篇文章就給大家介紹PHP解析JSON數據,即編碼和解碼JSON數據的基本方法。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。 首先我們來了解一下**什么是JSON?** JSON是一種標準的輕量級數據交換格式,它可以快速、容易地解析和生成。 與XML一樣,JSON是一種基于文本的格式,易于編寫且易于理解,但與XML不同,JSON數據結構占用的帶寬少于XML版本。JSON基于兩個基本結構: **對象:** 被定義為鍵/值對的集合(即key:value),每個對象以左大括號“{”開頭,以右大括號“}”結束,多個鍵/值對之間由逗號“,”分隔。 **數組:** 被定義為有序的值列表,數組以左括號“[”開頭,以右括號“]”結束,值以逗號“,”分隔。 在JSON,鍵總是字符串,而值可以是string, number,true或者false,null甚至是object或者array。字符串必須用雙引號括起來,并且可以包含轉義字符,如\n,\t和\。[JSON對象](https://so.csdn.net/so/search?q=JSON%E5%AF%B9%E8%B1%A1&spm=1001.2101.3001.7020)可能如下所示: | 123456789 | `{``????``"book"``: {``????????``"name"``:<span>?</span>``"PHP 從入門到精通"``,``????????``"author"``:<span>?</span>``"明日科技"``,``????????``"year"``: 2017,``????????``"type"``:<span>?</span>``"php編程"``,``????????``"bestseller"``: true``?????``}``}` | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 而[JSON數組](https://so.csdn.net/so/search?q=JSON%E6%95%B0%E7%BB%84&spm=1001.2101.3001.7020)的示例如下所示: | 1234567 | `{``????``"fruits"``: [``????????``"Apple"``,``????????``"Banana"``,``????????``"Strawberry"``,``????????``"Mango"``????``]}` | | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 可以看出,JSON的數據結構與PHP數組是非常相似的。下面我們來了解**php如何解析JSON數據?** PHP具有內置函數可以用來編碼和解碼JSON數據,可以實現這些功能分別是json_encode()函數和json_decode()函數。注:這兩個函數僅適用于UTF-8編碼的字符串數據中。 **在PHP中編碼JSON數據** 在PHP中,json_encode()函數用于將值編碼為JSON格式。被編碼的值可以是除資源之外的任何PHP數據類型,如數據庫或文件句柄。下面的示例演示如何將PHP關聯數組編碼為JSON對象: | 12345 | `<?php``??``// 關聯數組``??``$marks` `=<span>?</span>``array``(``"Peter"``=>65,<span>?</span>``"Harry"``=>80,<span>?</span>``"John"``=>78,<span>?</span>``"Clark"``=>90);``???``echo` `json_encode(``$marks``);``?>` | | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 上面示例的輸出如下所示:  同樣,你可以將PHP索引數組編碼為JSON數組,例: | 12345 | `<?php``??``// 索引數組``??``$colors` `=<span>?</span>``array``(``"紅"``,<span>?</span>``"綠"``,<span>?</span>``"藍"``,<span>?</span>``"橙"``,<span>?</span>``"黃"``);``??``echo` `json_encode(``$colors``);``?>` | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 上面示例的輸出如下所示:  你還可以使用JSON_FORCE_OBJECT選項強制json_encode()函數將PHP索引數組作為JSON對象返回,如下例所示: | 12345 | `<?php``??``// 索引數組``??``$colors` `=<span>?</span>``array``(``"紅"``,<span>?</span>``"綠"``,<span>?</span>``"藍"``,<span>?</span>``"橙"``);``??``echo` `json_encode(``$colors``, JSON_FORCE_OBJECT);``?>` | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 上面示例的輸出如下所示:  正如上面的示例所介紹的,非關聯數組可以編碼為數組或對象。但是,關聯數組始終編碼為對象。 **用PHP解碼JSON數據** 解碼JSON數據就像編碼它一樣簡單。你可以使用PHP json_decode()函數將JSON編碼的字符串轉換為適當的PHP數據類型。以下示例演示如何將JSON對象解碼或轉換為PHP對象。 | 123456 | `<?php``// 在PHP變量中存儲JSON數據``$json` `=<span>?</span>``'{"Peter":65,"Harry":80,"John":78,"Clark":90}'``;``?` `var_dump(json_decode(``$json``));``?>` | | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | 上面示例的輸出將如下所示:  默認情況下,json_decode()函數將返回一個對象。但是,你也可以選擇指定第二個參數$assoc,這個參數將接受一個布爾值,當JSON對象設置為true時,該值將被解碼為關聯數組;而false是默認值。我們來看一個例子: | 123456 | `<?php``// 在PHP變量中存儲JSON數據``$json` `=<span>?</span>``'{"Peter":65,"Harry":80,"John":78,"Clark":90}'``;``?` `var_dump(json_decode(``$json``, true));``?>` | | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 上面示例的輸出將如下所示:  現在讓我們再來看一個示例,它將向你展示如何解碼JSON數據并訪問PHP中JSON對象或數組的各個元素。 | 1234567891011121314151617181920 | `<?php``// 將JSON編碼的字符串分配給PHP變量``$json` `=<span>?</span>``'{"Peter":65,"Harry":80,"John":78,"Clark":90}'``;``?` `// 將JSON數據解碼為PHP關聯數組``$arr` `= json_decode(``$json``, true);``// Access values from the associative array``echo` `$arr``[``"Peter"``];?<span>?</span>``// Output: 65``echo` `$arr``[``"Harry"``];?<span>?</span>``// Output: 80``echo` `$arr``[``"John"``];??<span>?</span>``// Output: 78``echo` `$arr``[``"Clark"``];?<span>?</span>``// Output: 90``?` `// 將JSON數據解碼為PHP對象``$obj` `= json_decode(``$json``);``// 返回對象的訪問值``echo` `$obj``->Peter;??<span>?</span>``// Output: 65``echo` `$obj``->Harry;??<span>?</span>``// Output: 80``echo` `$obj``->John;???<span>?</span>``// Output: 78``echo` `$obj``->Clark;??<span>?</span>``// Output: 90``?>` | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 上面示例的輸出將如下所示:  你還可以使用foreach()循環遍歷解碼數據,如下所示: | 1234567891011121314151617181920 | `<?php``// 將JSON編碼的字符串分配給PHP變量``$json` `=<span>?</span>``'{"Peter":65,"Harry":80,"John":78,"Clark":90}'``;``?` `// 將JSON數據解碼為PHP關聯數組``$arr` `= json_decode(``$json``, true);``?` `// 通過關聯數組循環``foreach``(``$arr` `as` `$key``=>``$value``){``????``echo` `$key` `.<span>?</span>``"=>"` `.<span>?</span>``$value` `.<span>?</span>``"<br>"``;``}``echo` `"<hr>"``;``// 將JSON數據解碼為PHP對象``$obj` `= json_decode(``$json``);``?` `// 通過對象循環``foreach``(``$obj` `as` `$key``=>``$value``){``????``echo` `$key` `.<span>?</span>``"=>"` `.<span>?</span>``$value` `.<span>?</span>``"<br>"``;``}``?>` | | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 上面示例的輸出將如下所示:  總結:以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。 以上就是php如何解析JSON數據的詳細內容,更多請關注php中文網其它相關文章! 最后修改: ? 允許規范轉載 打賞 贊賞作者 支付寶微信 贊 如果覺得我的文章對你有用,請隨意贊賞