当前位置 博文首页 > 文章内容

    php空数组怎么转json对象

    作者:shunshunshun18 栏目:未分类 时间:2021-04-02 10:44:12

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    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失败。

    如:

    $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": {
        
      }
    }

    【推荐学习:】