直接上代码,大神可以运行下,只有$arr1被成功解析了,$arr2返回空,不明白为什么?<?php 
$str1 = ' {"Id":"87","ck_id":"74","kw_id":"1","zx_type":"wtz","status":1,"data":{"sm_data":[{"sku":"SP_00600002XL","sl":"60"},{"sku":"SP_00600002S","sl":"50"},"pm_data":[]}}';$str2 = ' {"Id":"87","ck_id":"74","kw_id":"1","zx_type":"wtz","status":1,"data":{"sm_data":[],"pm_data":[{"goods_sn":"SP_007","color_code":"00008","color_id_name":"紫罗兰","pm_code":"S\\L(2:4)","pm_sl":"4","pm_wtz_sl":"4","pm_wwc_sl":"4"}]}}';$arr1 = json_decode($str1,true);
echo $str1;
echo "<pre>";
print_R($arr1);echo "</pre>";$arr2 = json_decode($str2,true);
echo $str2;
echo "<pre>";
print_R($arr2);echo "</pre>";

解决方案 »

  1.   

    我也运行了下 2个都不行,json格式有问题
      

  2.   

    是不是上传之后格式有问题啊 我在本地第一个确实是可以解析的$str1 = ' {"Id":"87","ck_id":"74","kw_id":"1","zx_type":"wtz","status":1,"data":{"sm_data":[{"sku":"SP_00600002XL","sl":"60"},{"sku":"SP_00600002S","sl":"50"}],"pm_data":[]}}';$str2 = ' {"Id":"87","ck_id":"74","kw_id":"1","zx_type":"wtz","status":1,"data":{"sm_data":[],"pm_data":[{"goods_sn":"SP_007","color_code":"00008","color_id_name":"紫罗兰","pm_code":"S\\L(2:4)","pm_sl":"4","pm_wtz_sl":"4","pm_wwc_sl":"4"}]}}';$arr1 = json_decode($str1,true);
    echo $str1;
    echo "<pre>";
    print_r($arr1);echo "</pre>";$arr2 = json_decode($str2,true);
    echo $str2;
    echo "<pre>";
    print_r($arr2);echo "</pre>";
      

  3.   

    嗯这次发的,第一个可以解析了
    第二个中有汉字,那么必须是 utf-8 编码的才行。json_decode 只认 utf-8 编码的数据
    另外 "S\\L(2:4)" 需写作 "S\\\L(2:4)" 才可以识别,当然这是写在程序里测试时才这样。
    直接传递到变量的不需要