国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP解析帶BOM頭的JSON數(shù)據(jù),對接他人接口的時候,使用json_decode(),返回null的問題與解決方法

這篇具有很好參考價值的文章主要介紹了PHP解析帶BOM頭的JSON數(shù)據(jù),對接他人接口的時候,使用json_decode(),返回null的問題與解決方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

在php開發(fā)中會遇到和他人對接接口,對方使用json傳輸數(shù)據(jù),使用json_decode()函數(shù)卻無法將json數(shù)據(jù)轉(zhuǎn)換為數(shù)組。

先看封裝的代碼

private function curlPost($url, $post_data = []) 
{
        $ch = curl_init() or die (curl_error());
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 360);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗(yàn)證證書和hosts
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        $response = curl_exec($ch);
        $res = json_decode($response, true);
        return $res;
}

這種對接post接口的封裝方法一般是沒有問題的,但是我們打印$res的時候,會發(fā)現(xiàn)只會返回NULL。而打印$response的時候,是可以返回json字符串的。我們來看打印結(jié)果比對。

echo '<pre>';
var_dump($response);
var_dump($res);

打印結(jié)果

PHP解析帶BOM頭的JSON數(shù)據(jù),對接他人接口的時候,使用json_decode(),返回null的問題與解決方法,PHP常見問題,php,json,開發(fā)語言
打印結(jié)果

?

換一種打印方式:

var_dump($response);

打印結(jié)果

PHP解析帶BOM頭的JSON數(shù)據(jù),對接他人接口的時候,使用json_decode(),返回null的問題與解決方法,PHP常見問題,php,json,開發(fā)語言

將打印結(jié)果復(fù)制到j(luò)son轉(zhuǎn)換網(wǎng)站:JSON在線 | JSON解析格式化—SO JSON在線工具

PHP解析帶BOM頭的JSON數(shù)據(jù),對接他人接口的時候,使用json_decode(),返回null的問題與解決方法,PHP常見問題,php,json,開發(fā)語言

PHP解析帶BOM頭的JSON數(shù)據(jù),對接他人接口的時候,使用json_decode(),返回null的問題與解決方法,PHP常見問題,php,json,開發(fā)語言

卻發(fā)現(xiàn)是可以轉(zhuǎn)換的。

我嘗試將兩個結(jié)果進(jìn)行比對。

$response = curl_exec($ch);
$json = '{"achievement":"76","p_score":89,"score":70}';
var_dump($json);
echo '<br/>';
var_dump($response);

比對結(jié)果:

PHP解析帶BOM頭的JSON數(shù)據(jù),對接他人接口的時候,使用json_decode(),返回null的問題與解決方法,PHP常見問題,php,json,開發(fā)語言

會發(fā)現(xiàn)兩個結(jié)果相差3個字符

出現(xiàn)這個問題的原因:?

我們的代碼可能使用過window自帶的編輯器進(jìn)行編輯,它在保存一個UTF-8編碼的代碼文件的時候,會在文件頭插入三個不可見的字符,分別是:0xEF 0xBB 0xBF,即BOM。對于一般的文件來說,不會產(chǎn)生問題,但是php因?yàn)椴粫雎訠OM,所以在調(diào)用這個php代碼文件的時候,這三個字符也會跟著出現(xiàn)。

解決的方法:

加上下面的代碼即可

if(substr($response,0,3) == pack("CCC",0xEF,0xBB,0xBF)) {
    $response = substr($response, 3);
}
private function curlPost($url, $post_data = array()) 
{
    $ch = curl_init() or die (curl_error());
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 360);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗(yàn)證證書和hosts
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    $response = curl_exec($ch);

    if(substr($response,0,3) == pack("CCC",0xEF,0xBB,0xBF)) {
        $response = substr($response, 3);
    }
    $res = json_decode($response, true);
    return $res;
}

最后就可以將json字符串轉(zhuǎn)換為數(shù)組。文章來源地址http://www.zghlxwxcb.cn/news/detail-741697.html

到了這里,關(guān)于PHP解析帶BOM頭的JSON數(shù)據(jù),對接他人接口的時候,使用json_decode(),返回null的問題與解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • matlab發(fā)送串口數(shù)據(jù),并進(jìn)行串口數(shù)據(jù)頭的添加,我們來看下pwm解析后并通過串口輸出的效果

    matlab發(fā)送串口數(shù)據(jù),并進(jìn)行串口數(shù)據(jù)頭的添加,我們來看下pwm解析后并通過串口輸出的效果

    uintt16位的話會在上面前面加上00,16位的話一定是兩個字節(jié),一共16位的數(shù)據(jù) 如果是unint8的話就不會, 注意這里給的是13,但是現(xiàn)實(shí)的00 0D,這是大小端的問題,在matlanb里設(shè)置,我們就默認(rèn)用這個模式吧,沒關(guān)系的,小端,小段的小數(shù)據(jù)在前,所以是00 0D。 下圖是串口輸出P

    2024年02月20日
    瀏覽(30)
  • AD21小技巧:導(dǎo)出BOM時候區(qū)分開頂層和底層元件

    AD21小技巧:導(dǎo)出BOM時候區(qū)分開頂層和底層元件

    AD21小技巧:導(dǎo)出BOM時候區(qū)分開頂層和底層元件 選中PCB Parameters ,找到layer選項(xiàng),點(diǎn)擊顯示。 按住左鍵,將layer拖到上面一欄 如圖片所示,頂層和底層元件就分開了。然后再按需要的bom格式導(dǎo)出就可以了。

    2024年02月11日
    瀏覽(105)
  • 測試接口,發(fā)起請求時候報錯JSON parse error: Cannot deserialize instance of java.util.ArrayList<java.lang.Object>

    測試接口,發(fā)起請求時候報錯JSON parse error: Cannot deserialize instance of java.util.ArrayList<java.lang.Object>

    JSON parse error: Cannot deserialize instance of java.util.ArrayListjava.lang.Object out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayListjava.lang.Object out of START_OBJECT token at [Source: (PushbackInputStream); line: 1, column: 1] 參數(shù)字段不匹配

    2024年02月12日
    瀏覽(24)
  • dedecms織夢系統(tǒng)對接百度熊掌號并添加JSON_LD數(shù)據(jù)

    百度近期推出的百度熊掌號非常的不錯,我的dedecms織夢系統(tǒng)早早就對接好了,它能對你的原創(chuàng)文章進(jìn)行原創(chuàng)保護(hù),并評出熊掌號搜索指數(shù),熊掌號搜索指數(shù)是對你文章的內(nèi)容質(zhì)量,用戶喜愛、原創(chuàng)能力、活躍表現(xiàn)、領(lǐng)域?qū)W⑽鍌€維度進(jìn)行計算評估而得到的。 你的dedecms織夢網(wǎng)站開通

    2024年02月02日
    瀏覽(21)
  • 數(shù)據(jù)接口工程對接BI可視化大屏(一)

    數(shù)據(jù)接口工程對接BI可視化大屏(一)

    此項(xiàng)目以常見的手機(jī)零售BI場景為例,介紹如何編寫數(shù)據(jù)接口工程對接BI可視化大屏。 如何從當(dāng)前常見的主流大數(shù)據(jù)場景中為后臺程序推送數(shù)據(jù)及接收前臺數(shù)據(jù)。 背景知識需要: 掌握Redis,MySQL,ClickHouse,HBase,Phoenix,Kafka,ElasticSearch相關(guān)軟件的使用。 掌握SpringBoot,MyBatis等相

    2024年02月09日
    瀏覽(26)
  • 多語言對接電商平臺api接口獲取京東商品評論數(shù)據(jù)代碼展示示例

    多語言對接電商平臺api接口獲取京東商品評論數(shù)據(jù)代碼展示示例

    商品評論接口的意義: 確認(rèn)消費(fèi)者關(guān)注與產(chǎn)品賣點(diǎn)是否一致; 洞察用戶對價格、促銷、直播的敏感度;發(fā)現(xiàn)產(chǎn)品質(zhì)量、客服、物流等方面的問題;找到品牌宣稱與用戶預(yù)期、實(shí)際場景之間差異化;挖掘消費(fèi)者偏好的差異性,進(jìn)行用戶分群偏好研究;還原客戶故事,分析其購

    2024年02月11日
    瀏覽(33)
  • 爬蟲小白入門在服務(wù)器上-部署爬蟲或者開服務(wù)接口并供給他人訪問

    爬蟲小白入門在服務(wù)器上-部署爬蟲或者開服務(wù)接口并供給他人訪問

    一、準(zhǔn)備工作-服務(wù)器 1、先準(zhǔn)備一個服務(wù)器(以阿里云為例子) 1、先準(zhǔn)備一個云服務(wù)器,比如阿里云服務(wù)器新人免費(fèi)使用3個月 , 或者騰訊云服務(wù)器,又或者華為云服務(wù)器都可以, 但是提醒注意下,新用戶的首單資格優(yōu)惠力度最大,所以最好在一年有活動的時候買,比如61

    2024年02月17日
    瀏覽(17)
  • DEDECMS JSON數(shù)據(jù)生成 DEDECMS JSON接口制作

    json數(shù)據(jù)格式可以方便不同站點(diǎn)之間進(jìn)行數(shù)據(jù)調(diào)用引用,當(dāng)然我們的DEDECMS也可以實(shí)現(xiàn)全站數(shù)據(jù)生成JSON供其他站點(diǎn)調(diào)用,代碼很簡單,主要用到include/json.class.php。 織夢本身是自帶json標(biāo)簽的,調(diào)用方法: 這個標(biāo)簽調(diào)用例子在織夢手冊里已經(jīng)給我們提供了,url是一個遠(yuǎn)程json接口地址

    2024年02月02日
    瀏覽(18)
  • postman測試提交json數(shù)據(jù)到數(shù)據(jù)接口

    postman測試提交json數(shù)據(jù)到數(shù)據(jù)接口

    利用postman測試,采取post方式,提交json數(shù)據(jù)到服務(wù)器端接口,應(yīng)該如下設(shè)置: 相應(yīng)服務(wù)器端程序:

    2024年02月11日
    瀏覽(24)
  • QT解析json數(shù)據(jù)

    QT解析json數(shù)據(jù)

    將Json對象轉(zhuǎn)換成map 將Json文件轉(zhuǎn)換成Json對象,再轉(zhuǎn)換成map

    2024年01月25日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包