久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

使用PHP json_decode可能遇到的坑與解決方法

在我們日常使用php開發(fā)的時候,經(jīng)常會用到json_decode函數(shù),最近在使用json_decode函數(shù)的發(fā)現(xiàn)了一個坑,想著總結分享出來,所以下面這篇文章主要給大家介紹了關于使用PHP json_decode可能遇

前言

最近在做網(wǎng)站 的時候用到了json_decode函數(shù),發(fā)現(xiàn)了一個問題,現(xiàn)在總結分享出來供大家參考學習,話不多說了,來一起看看詳細的介紹吧。

場景:

某項目客戶反饋,輸出的結果 JSON 中有個要求為對象的數(shù)據(jù)字段,在某些情況下返回的是 [] 而不是 {};數(shù)據(jù)由公司其他部門提供,查看原始數(shù)據(jù)的時候,沒有發(fā)現(xiàn)任何問題;后來因為要加入某些預處理,在獲取到其他部門的 JSON 數(shù)據(jù)之后進行解碼并對某個字段進行處理;然而,在處理完之后再次使用 JSON 輸出,發(fā)現(xiàn)結果已經(jīng)不是我們想要的了。

原始數(shù)據(jù)

{
 ...,
 "foo": "",
 "bar": {},
 ...
}

其中 foo 是我要進行處理的字段,處理完成之后再次使用 json_encode($data) 進行 JSON 編碼。

編碼完成之后的結果卻是這樣的

{
 ...,
 "foo": "",
 "bar": [],
 ...
}

空對象編程了空數(shù)組,而且我并沒有處理過字段 bar

通過對模擬數(shù)據(jù)的實測,發(fā)現(xiàn)是因為在對 JSON 進行解碼的時候,是這么解的

$data = json_decode($jsonString, true)

問題就出在這里,由于 PHP 自身的特性,在 PHP 中 array 是可以代表強類型語言,如 Java 中的 List 和 Map 的。

來看 PHP 中 json_decode() 方法是如何定義的

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

來源 http://php.net/manual/zh/function.json-decode.php

當?shù)诙€參數(shù) $assoc 為 true 時,返回的類型是 array,所以問題就來了,當 JSON 中空對象 {} 和 [] 空數(shù)組,使用這種方式解碼出來的結果表現(xiàn)是一致的;即 array();當再次 json_encode() 編碼的時候就出現(xiàn)了 {} 變 [] 了。

所以正確的做法是在解碼 JSON 的時候 json_decode 不要傳遞第二個參數(shù);讓解碼結果是一個對象,然后操作對象的屬性,操作完成之后再次編碼就不會出現(xiàn)偏差。

這種問題最突出在于強類型語言和弱類型語言的 API 對接上,由于項目的下家是使用 Java 語言,所以導致了 BUG

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對的支持。

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學習交流,請勿用于商業(yè)用途。如損害你的權益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現(xiàn)針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現(xiàn)服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現(xiàn)APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現(xiàn)的多維數(shù)組排序算法,結合實例形式對比分析了php針對多維數(shù)組及帶有鍵名的多維數(shù)組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現(xiàn)無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發(fā)接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 亚洲精品乱码久久久久久按摩观 | 成人免费福利视频 | www.青娱乐| 欧洲国产精品视频 | 久久久免费毛片 | 欧美1区2区| 日韩电影免费在线观看中文字幕 | 91精品国产一二三 | 精久久| 羞羞色视频 | 精精国产xxxx视频在线野外 | 免费亚洲网站 | 日本在线你懂的 | 亚洲欧洲成人av每日更新 | 99精品免费视频 | 亚洲国产精品一区二区久久 | 亚洲视频在线播放 | 一级毛片视频 | 欧洲色| 日韩欧美中文字幕在线观看 | 视频一区二区中文字幕 | 国产精品久久久一区二区三区 | 久热m3u8| 成人在线视频免费观看 | 国产在线精品一区二区 | 午夜在线免费观看 | 亚洲成av片人久久久 | 国产欧美日韩在线一区 | 日韩 欧美 综合 | 精品国产久 | 羞羞视频在线观看 | 中文字幕 欧美 日韩 | 欧美狠狠操 | 日本成人免费观看 | 国产色在线 | 成人高清视频在线观看 | 久久国内精品 | 91福利网址| 一级欧美黄色片 | 国产综合久久久久久鬼色 | aaa精品|