首頁 > 後端開發 > PHP問題 > php空數組怎麼轉json對象

php空數組怎麼轉json對象

藏色散人
發布: 2023-03-09 10:10:02
原創
3062 人瀏覽過

php空數組轉json物件的方法:1、使用「JSON_FORCE_OBJECT」轉json物件;2、使用資料型別轉換將空數組轉json物件;3、使用ArrayObject將空數組轉json物件。

php空數組怎麼轉json對象

本文操作環境:Windows7系統、PHP7.1版,DELL G3電腦

PHP json_encode轉換空數組為物件

問題描述:

php在給端提供接口,例如PC和安卓,ios等,如果返回json格式的數據,當返回數據的為數組,且key為字串時,json化後會回傳jsonObject,但如果是空數組,有可能回傳的就是jsonArray,資料結構不一致導致端解析json失敗。

如:

$arr  = [
     'id'  => 123.,
     'name'  =>  'andrew' ,
];
 
$jsonRet  = json_encode( $arr );
 
print_r( $jsonRet );
登入後複製

輸出:

{
  "id": 123,
  "name": "andrew"
}
登入後複製

但是如果是:

$arr = [];
$jsonRet = json_encode($arr);
print_r($jsonRet);
登入後複製

輸出:

[
  
]
登入後複製

如何在陣列為空時也是JsonObject呢?

方法一:

使用JSON_FORCE_OBJECT

$arr = [];
$jsonRet = json_encode($arr, JSON_FORCE_OBJECT);
print_r($jsonRet);
登入後複製

此法有一弊端,eg:

$arr = [
    'jsonArray' => [
        '21', '12', '13'
    ],
    'jsonObject' => []
];
$jsonRet = json_encode($arr,JSON_FORCE_OBJECT);
print_r($jsonRet);
登入後複製

#輸出:

{
  "jsonArray": {
    "0": "21",
    "1": "12",
    "2": "13"
  },
  "jsonObject": {
    
  }
}
登入後複製

原本jsonArray的也被jsonObject化了,局部的改變不能影響全域

#方法二

使用資料型別轉換

$bar = array();  
$foo = (object)$bar;  
echo json_encode($foo);
登入後複製

#方法三(推薦)

使用ArrayObject

$arr = [
    'jsonArray' => [
        '21', '12', '13'
    ],
    'jsonObject' => new \ArrayObject()
];
$jsonRet = json_encode($arr);
print_r($jsonRet);
登入後複製

輸出:

{
  "jsonArray": [
    "21",
    "12",
    "13"
  ],
  "jsonObject": {
    
  }
}
登入後複製

【推薦學習:PHP影片教學

以上是php空數組怎麼轉json對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板