php空数组转json对象的方法:1、使用“JSON_FORCE_OBJECT”转json对象;2、使用数据类型转换将空数组转json对象;3、使用ArrayObject将空数组转json对象。
本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑
PHP json_encode转换空数组为对象
问题描述:
php在给端提供接口,比如PC和安卓,ios等,如果返回json格式的数据,当返回数据的为数组,且key为字符串时,json化后将返回jsonObject,但是如果是空数组,有可能返回的就是jsonArray,数据结构不一致导致端解析json失败。
立即学习“PHP免费学习笔记(深入)”;
如:
$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对象的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2517006.html