json_en code()返回false [英] json_encode() returns false

查看:141
本文介绍了json_en code()返回false的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我第一次面对,那var_dumping json_en code产生布尔值的数组。

我有一个是源于反序列化数组。我var_dumped它并确保它是一个有效的数组。其结果是象下面这样。这只不过是小菜一碟,而不是整个调试视图。

 阵列(大小= 3)
'ID'=>字符串'ASCO功率的技术-1-对'(长度= 27)
  '名'=>字符串'ASCO功率的技术-1-对'(长度= 27)
  '孩子'=>
    阵列(尺寸= 2)的
      0 =>
        阵列(大小= 4)
          'ID'=>字符串'APL物流'(长度= 13)
          '名'=>字符串'美集物流(长度= 13)
          '数据'=>
            阵列(尺寸= 2)的
              '乐队'=>字符串'ASCO,通信电源技术,L.P。 (长度= 29)
              '关系'=>字符串'乐队的买方(长度= 13)
          '孩子'=>
            阵列(大小= 11)
              0 => &安培;
                阵列(大小= 3)
                  'ID'=>字符串'TRISA-AG'(长度= 8)
                  '名'=>字符串'TRISA AG'(长度= 8)
                  '数据'=>
                    阵列(尺寸= 2)的
                      '乐队'=>字符串'美集物流(长度= 13)
                      '关系'=>字符串'乐队的买方(长度= 13)
              1 => &安培;
                阵列(大小= 3)
                  'ID'=>字符串'高露洁三笑-CO-LTD(长度= 22)
                  '名'=>字符串'高露洁三笑CO。LTD。(长度= 22)
                  '数据'=>
                    阵列(尺寸= 2)的
                      '乐队'=>字符串'美集物流(长度= 13)
                      '关系'=>字符串'乐队的买方(长度= 13)

......

Aterwards我json_en code将其与最大深度= 3。请注意,我使用PHP 5.5和在Apache 2.4上运行,因此,它支持在json_en code深度参数()。这是我在做什么。

  $阵列=反序列化($串行);
    后续代码var_dump($数组);
    $ JSON = json_en code($数组,JSON_ preTTY_PRINT,3);
    后续代码var_dump($ JSON);

最后我得到了 $阵列 var_dumped正确和 $ JSON 与假布尔值结果var_dumped。它出什么问题了?这是由于早期的PHP版本的unproper的var_dump会导致假布尔?有没有人遇到过这个?

更新:

这是序列化字符串。整个字符串太一堆,所以我只粘贴了一块。

<$p$p><$c$c>a:3:{s:2:\"id\";s:27:\"asco-power-technologies-l-p\";s:4:\"name\";s:27:\"asco-power-technologies-l-p\";s:8:\"children\";a:2:{i:0;a:4:{s:2:\"id\";s:13:\"apl-logistics\";s:4:\"name\";s:13:\"APL物流; S:4:数据;一:2:{S:4:带; S:29:ASCO,通信电源技术,LP; S:8:关系; S:13:买家的乐队;}等8:孩子;一:11:{I:0;一:3:{S:2:ID; S:8:TRISA-AG; S:4:名称; S:8:TRISA AG; S:4:数据;一:2:{S:4:带; S:13:APL物流; S:8:关系;小号:13:乐队的买家;}} I:1; 3:{S:2:ID; S:22:高​​露洁三笑-CO-有限公司; S:4:名 ; S:22:高​​露洁三笑有限公司有限公司; S:4:数据;一:2:{S:4:带; S:13:APL物流; S:8:关系;小号:13:乐队的买家;}} I:2; A:3:{S:2:ID; S:25:APLL-ON-代表-oftongfang; S:4:名 ; S:25:APLL谨代表OFTONGFANG; S:4:数据;一:2:{S:4:带; S:13:APL物流; S:8:关系;小号:13:乐队的买家;}} I:3; 3:{S:2:ID; S:26:APLL-ON-代表,浙江的; S:4:名称; S:26:APLL谨代表浙江; S:4:数据;一:2:{S:4:带; S:13:APL物流; S:8:关系;​​ S:13:乐队的买家;}} I:4;一:3:{S:2:ID; S:33:APLL上代表 - 的 - 同方全局;小号:4:名; S:33:APLL谨代表清华同方全球的; S:4:数据;一:2:{S:4:带; S:13:APL物流 ; S:8:关系; S:13:乐队的买家;}}我:5;一:3:{S:2:ID; S:34:APLL上代表 - 的 - 宁波 - 襄垣; S:4:名; S:34:APLL谨代表宁波祥源的; S:4:数据;一:2:{S:4:带; S: 13:APL物流; S:8:关系; S:13:乐队的买家;}}我:6;一:3:{S:2:ID; S:33:APLL名; S:33:APLL谨代表宁波HOMESTAR的; S:4:数据;一:;:4的-on代表 - 的 - 宁波 - HOMESTAR 2:{S:4: 带; S:13:APL物流; S:8:关系; S:13:乐队的买家;}}我:7; 3:{S:2:ID;小号:17:APLL上代表 - 的; S:4:名; S:17:APLL代表; S:4:数据;一:2:{S:4: 带; S:13:APL物流; S:8:关系; S:13:乐队的买家;}} I:8;一:3:{S:2:ID;小号:21:APL物流-SDN-有限公司; S:4:名; S:21:APL LOGISTICS SDN BHD; S:4:数据;一:2:{S:4: 带; S:13:APL物流; S:8:关系; S:13:乐队的买家;}}我:9;一:4:{S:2:ID;小号:21:APL物流有限; S:4:名; S:21:APL物流有限公司; S:4:数据;一:2:{S:4:带 ; S:13:APL物流; S:8:关系; S:13的买家band\";}s:8:\"children\";a:27:{i:0;a:3:{s:2:\"id\";s:26:\"tri-phil-international-inc\";s:4:\"name\";s:27:\"TRI-PHIL INTERNATIONAL INC; S:4:数据;一:2:{S:4:带; S:21:APL物流有限公司; S:8:关系; S:13:买家带;}} I:1; 3:{S:2:ID; S:16:PT-APL物流; S:4:名; S:17:PT。 APL物流; S:4:数据;一:2:{S:4:带; S:21:APL物流有限公司; S:8:关系; S:13的买家带;}} I:2; A:3:{S:2:ID; S:25:keygold制造-INC; S:4:名; S:26:kEYGOLD .. 。


解决方案

$阵列的深度肯定是大于3只是要深入一个更大的数字。

在一个侧面说明,你也可能会使用 json_last_error 看到错误消息在json_en code失败的情况。

This is the first time i ever face, that var_dumping json_encode of an array resulting boolean value.

I have an array that was resulted from unserialization. I var_dumped it and made sure that it is a valid array. The result is like below. This is just a piece, not entire debug view.

array (size=3)
'id' => string 'asco-power-technologies-l-p' (length=27)
  'name' => string 'asco-power-technologies-l-p' (length=27)
  'children' => 
    array (size=2)
      0 => 
        array (size=4)
          'id' => string 'apl-logistics' (length=13)
          'name' => string 'APL LOGISTICS' (length=13)
          'data' => 
            array (size=2)
              'band' => string 'ASCO POWER TECHNOLOGIES ,L.P.' (length=29)
              'relation' => string 'Buyer of band' (length=13)
          'children' => 
            array (size=11)
              0 => &
                array (size=3)
                  'id' => string 'trisa-ag' (length=8)
                  'name' => string 'TRISA AG' (length=8)
                  'data' => 
                    array (size=2)
                      'band' => string 'APL LOGISTICS' (length=13)
                      'relation' => string 'Buyer of band' (length=13)
              1 => &
                array (size=3)
                  'id' => string 'colgate-sanxiao-co-ltd' (length=22)
                  'name' => string 'COLGATE SANXIAO CO LTD' (length=22)
                  'data' => 
                    array (size=2)
                      'band' => string 'APL LOGISTICS' (length=13)
                      'relation' => string 'Buyer of band' (length=13)

.....

Aterwards i json_encode it with max depth=3. Note, i am using PHP 5.5 and running on Apache 2.4, so that it supports depth parameter on json_encode(). This is what i was doing.

    $array = unserialize($serial);
    var_dump($array);
    $json = json_encode($array, JSON_PRETTY_PRINT, 3);
    var_dump($json);

Finally i got $array var_dumped properly and $json var_dumped with result of false boolean value. What's wrong with it? Is it due to early PHP release that unproper var_dump would result false boolean? Have anyone ever faced this?

UPDATE:

This is the serialize string. The entire string is too bunch so i paste only a piece.

a:3:{s:2:"id";s:27:"asco-power-technologies-l-p";s:4:"name";s:27:"asco-power-technologies-l-p";s:8:"children";a:2:{i:0;a:4:{s:2:"id";s:13:"apl-logistics";s:4:"name";s:13:"APL LOGISTICS";s:4:"data";a:2:{s:4:"band";s:29:"ASCO POWER TECHNOLOGIES ,L.P.";s:8:"relation";s:13:"Buyer of band";}s:8:"children";a:11:{i:0;a:3:{s:2:"id";s:8:"trisa-ag";s:4:"name";s:8:"TRISA AG";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:1;a:3:{s:2:"id";s:22:"colgate-sanxiao-co-ltd";s:4:"name";s:22:"COLGATE SANXIAO CO LTD";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:2;a:3:{s:2:"id";s:25:"apll-on-behalf-oftongfang";s:4:"name";s:25:"APLL ON BEHALF OFTONGFANG";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:3;a:3:{s:2:"id";s:26:"apll-on-behalf-of-zhejiang";s:4:"name";s:26:"APLL ON BEHALF OF ZHEJIANG";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:4;a:3:{s:2:"id";s:33:"apll-on-behalf-of-tongfang-global";s:4:"name";s:33:"APLL ON BEHALF OF TONGFANG GLOBAL";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:5;a:3:{s:2:"id";s:34:"apll-on-behalf-of-ningbo-xiangyuan";s:4:"name";s:34:"APLL ON BEHALF OF NINGBO XIANGYUAN";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:6;a:3:{s:2:"id";s:33:"apll-on-behalf-of-ningbo-homestar";s:4:"name";s:33:"APLL ON BEHALF OF NINGBO HOMESTAR";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:7;a:3:{s:2:"id";s:17:"apll-on-behalf-of";s:4:"name";s:17:"APLL ON BEHALF OF";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:8;a:3:{s:2:"id";s:21:"apl-logistics-sdn-bhd";s:4:"name";s:21:"APL LOGISTICS SDN BHD";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:9;a:4:{s:2:"id";s:21:"apl-logistics-limited";s:4:"name";s:21:"APL LOGISTICS LIMITED";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}s:8:"children";a:27:{i:0;a:3:{s:2:"id";s:26:"tri-phil-international-inc";s:4:"name";s:27:"TRI-PHIL INTERNATIONAL INC.";s:4:"data";a:2:{s:4:"band";s:21:"APL LOGISTICS LIMITED";s:8:"relation";s:13:"Buyer of band";}}i:1;a:3:{s:2:"id";s:16:"pt-apl-logistics";s:4:"name";s:17:"PT. APL LOGISTICS";s:4:"data";a:2:{s:4:"band";s:21:"APL LOGISTICS LIMITED";s:8:"relation";s:13:"Buyer of band";}}i:2;a:3:{s:2:"id";s:25:"keygold-manufacturing-inc";s:4:"name";s:26:"KEYGOLD ... 

解决方案

The depth of $array is definitely greater than 3. Just make depth a larger number.

On a side note, you may also use json_last_error to see the error message in the case that json_encode fails.

这篇关于json_en code()返回false的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆