zoukankan      html  css  js  c++  java
  • json_encode($b, JSON_FORCE_OBJECT) 可以强制转换成对象

    最近在为移动端的项目提供接口,数据格式都为json,不过在过程中遇到一个小问题,代码如下:
    情况一:
    $tmp = array('a','b','c');
    
    echo json_encode($tmp);
    
    输出结果:['a','b','c']
    
    情况二:
    $tmp = array('a'=>'a','b'=>'b','c'=>'c');
    
    echo json_encode($tmp);
    
    输出结果:{'a':'a','b':'b','c':'c'}
    
    问题出来了:
    在二中,如果$tmp 可能为空的情况下,json_encode 后 输出的结果将是[]空数组
    那么,这个接口在提供数据时就必须得分两种情况来考虑了:
    数组为空时,接口输出的是空数组;
    数组不为空时,接口输出的对象
    解决方案:
    
    json_encode($tmp, JSON_FORCE_OBJECT) 不管在什么情况,接口永远输出对象,空数据及为{}
    
    其实还有一个问题不知道原因:
    在一,二两种情况中,为什么一种json_encode之后出来的是数组[],而二中出来的是对象{}
    答案:
    非连续的索引数组,在json_encode时都会被编码为object
    这句话这么描述好像有些不妥
    
    索引数组本来就是连贯的,应该是除了索引数组,其他数组(关联数组,多维数组)都会被编码为object。
  • 相关阅读:
    Ubuntu 14.04 LTS 安装 NVIDIA 显卡驱动后的屏幕亮度调节问题
    算法算法算法
    Java transient关键字
    使用git和github管理自己的项目---基础操作学习[转]
    Linux 查看系统硬件信息[转]
    实现Servlet容器一
    nginx入门三
    nginx入门二
    nginx入门一
    centos7入门
  • 原文地址:https://www.cnblogs.com/wrld/p/10625642.html
Copyright © 2011-2022 走看看