700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > PHP json_encode转换空数组为对象

PHP json_encode转换空数组为对象

时间:2021-04-26 04:37:36

相关推荐

PHP json_encode转换空数组为对象

问题描述:

php在给端提供接口,比如PC和安卓,ios等,如果返回json格式的数据,当返回数据的为数组,且key为字符串时,json化后将返回jsonObject,但是如果是空数组,有可能返回的就是jsonArray,数据结构不一致导致端解析json失败。

如:

输出:

{"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;echojson_encode($foo);

方法三(推荐)

使用 ArrayObject

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

输出:

{"jsonArray": ["21","12","13"],"jsonObject": {}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。