在接入合作方接口时,遇到一个json无法解析出来代码如下:
<?php $res='{"resultcode":007,"resMsg":"!&!lB5:aHb-\/5hb\\Frx;%\/&>:]u&;=>foFBW>&!\"2&()o\\MN$i&J\'w9@"}';// 模拟合作方穿过的json数据 $date = json_decode($res,true); var_dump($date); ?>
由于无法解析json数据导致接口无法接入,到网上查了一些资料,都是说一些php配置无效,使用单引号,没有转义之类的,后来仔细检测,发现我这边都不存在这样的问题,最后找出了真正原因,原来是因为resultcode后面的参数导致,json_decode在解析json时会检测json中的类型,由于resultcode后面的参数没有加双号,json_decode会按int类型检测,但是以0开头又不属于int类型,所以会传回一个null,导致我这边无法获取到json数据。
正确的形式,应该如下:
<?php $res='{"resultcode":007,"resMsg":"!&!lB5:aHb-\/5hb\\Frx;%\/&>:]u&;=>foFBW>&!\"2&()o\\MN$i&J\'w9@"}';// 模拟合作方穿过的json数据 $date = json_decode($res,true); var_dump($date); ?>
总的来说是合作方那边回传的json问题,这个问题在别的语言解析时也可能会遇到,今天贴出来,希望能帮助大家。