前言:这次是给一款小程序提供接口时发现的

别的不多说,下面直接看出现问题的json数据

关于json_encode转数组为json对象时里有数组格式数据的问题-LMLPHP

可以看到,这是一个大的json对象,是由多维数组组成,一般api接口提供的也是这种格式。

但是仔细看红框中的内容,它居然是个数组格式的,而跟它同级的是对象格式的,并且只有这一个。

这就奇怪了,明明都是统一处理的,为何就这一条是数据呢?而因为这一条是数组格式,导致前端那边解析失败。

当时花了2分钟思考,无果!

接着上百度大法,找到了点蛛丝马迹

如果返回json格式的数据,当返回数据的为数组,且key为字符串时,json化后将返回jsonObject,但是如果是空数组,有可能返回的就是jsonArray,数据结构不一致导致端解析json失败。

看到这里,我瞬间明白了,应该是我的数组中这条中可能存在空的数据,导致这条是数组格式。

下面就好办了,进PHP官网查看json_encode参数,发现如下

关于json_encode转数组为json对象时里有数组格式数据的问题-LMLPHP

解决方式如下

json_encode($arr, JSON_FORCE_OBJECT);

最后附上效果图

关于json_encode转数组为json对象时里有数组格式数据的问题-LMLPHP

虽然这个问题解决花费的时间不长,但是容易疏忽啊,时间一久再碰到估计又是懵逼状态了,特此记录  以供自己  温故而知新

参考链接
    https://blog.csdn.net/qq_21119513/article/details/80577436
10-10 16:23