首頁  >  文章  >  後端開發  >  php空數組怎麼轉json對象

php空數組怎麼轉json對象

藏色散人
藏色散人原創
2021-04-02 09:45:223017瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn