后端开发|PHP问题
php
后端开发-PHP问题
安卓截屏源码,vscode和浏览器一块显示,前端开发 ubuntu,怎么查看tomcat的位,锦州爬虫馆,大连php培训哪家好,沧州seo推广大概多少钱lzw
本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑
快车盘源码系统,ubuntu怎么建web,爬虫程序怎么挣钱,status php,seo发现好吗lzw
PHP json_encode转换空数组为对象
工具站点源码,ubuntu安装efi顺序,tomcat8虚目录配置,golang爬虫框架教程,php数据显示到页面上,丰城SEO优化lzw
问题描述:
php在给端提供接口,比如PC和安卓,ios等,如果返回json格式的数据,当返回数据的为数组,且key为字符串时,json化后将返回jsonObject,但是如果是空数组,有可能返回的就是jsonArray,数据结构不一致导致端解析json失败。
如:
$arr = [id => 123., ame => 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视频教学】