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

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

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

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

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

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

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

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

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

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

解决方式如下

json_encode($arr, JSON_FORCE_OBJECT);

最后附上效果图

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

参考链接
https://blog.csdn.net/qq_21119513/article/details/80577436

关于json_encode转数组为json对象时里有数组格式数据的问题的更多相关文章

  1. php数组转json对象并保留数字索引

    本文要解决的问题是php不带索引的数组转换为json对象(而非默认的json数组) php中数组转json使用的方法是系统自带的:json_encode php中数组转json的规则是:当没有指定索引 ...

  2. PHP“Cannot use object of type stdClass as array” (php在调用json_decode从字符串对象生成json对象时的报错)

    php再调用json_decode从字符串对象生成json对象时,如果使用[]操作符取数据,会得到下面的错误 错误:Cannot use object of type stdClass as arra ...

  3. 关于JSON对象,以及联合数组,eval函数的使用参考

    关于JSON对象,以及联合数组,eval函数的使用参考 var json="{persons:[{name:'Zhangsan',sex:'male'},{name:'Lisi',sex:' ...

  4. PHP 多维数组转json对象

    PHP 多维数组转json对象 php 数组转json对象,可能大家都知道要用json_encode,但是转换出来的格式多有不同,此处做个小小的记录! 1. 一维数组转json对象 <?php ...

  5. javascript里面的数组,json对象,动态添加,修改,删除示例

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. 对于json对像,怎么遍历json对象的所有key,在使用json对象时,如果无法知道key,怎么通过key变量来获取值

    对于json对像,怎么遍历json对象的所有key,在使用json对象时,如果无法知道key,怎么通过key变量来获取值?请参阅下面的关键代码: <html> <head> & ...

  7. PHP中json_encode()使用须知,JSON数组和JSON对象

    ⊰ 偷偷的告诉你,这是一个很不谨慎就会踩得坑 ⊱  如下代码 (看了一下很简单,没毛病啊,老铁) $arr = array( '0'=>'a','1'=>'b','2'=>'c',' ...

  8. 1.部分(苹果)移动端的cookie不支持中文字符,2.从json字符串变为json对象时,只支持对象数组

    1.移动端的cookie不支持中文字符.可以用编码,解码的方式解决. 2.json字符串变成相应 的,json对象数组字符串.就这样 3.不同客户端(移动端.电脑)的请求,在C#服务端的取时间的格式竟 ...

  9. jQuery中json对象的复制(数组及对象) .

    1.jQuery自带的$.map方式: $.map(json, function (n) { return n; }); 这种方式原来用于复制数组还可以,今天用它复制数组中的某一条记录,发现字段名称丢 ...

随机推荐

  1. debug2

    调试常用功能介绍 日常java开发中实际写代码的时间并不会很多,花在整理思路,代码重构,调试bug会占用很大部分时间. 熟练掌握调试工具,了解调试相关技巧,是java开发中减少调试时间,提高效率不可或 ...

  2. 索引使用,分析初探。(explain分析执行计划,以及强制使用force index)

    促使这次探索的初衷还是因为要对一个定时脚本性能进行优化. 脚本有两个指定状态分别是status, latest_process_status,和一个超期时间expire_time进行限制. 按照我以前 ...

  3. requests 使用免费的代理ip爬取网站

    import requests import queue import threading from lxml import etree #要爬取的URL url = "http://xxx ...

  4. JQ判断在不同分辨率电脑下使用不同的banner尺寸

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Mysql Router 的集群

    1. c:\mysql-router, c:\mysql-5.7.23, 这两个目录的bin都要加入path 2. c:\mysql-shell,在bin下,有一个 mysqlsh.exe, 双击,打 ...

  6. JMeter 连接 sql server

    1.安装驱动 http://www.microsoft.com/zh-CN/download/details.aspx?id=11774 下载后解压后复制sqljdbc.jar到 “jmeter的安装 ...

  7. 插件 DataTable 创建列表 render参数的详解与如何传递本行数据id

    1.首先 导入DataTable 的插件 2.定义表结构: HTML: <table> <thead> <tr> <th>id</th> & ...

  8. css多列居中

    https://jingyan.baidu.com/article/36d6ed1f67d58f1bcf488393.html

  9. SpringBoot之文件上传

    package org.springboot.controller; import org.apache.logging.log4j.LogManager; import org.apache.log ...

  10. Java使用RabbitMQ之订阅分发(Topic)

    使用RabbitMQ进行消息发布和订阅,生产者将消息发送给转发器(exchange),转发器根据路由键匹配已绑定的消息队列并转发消息,主题模式支持路由键的通配. 生产者代码: package org. ...