• php 数组里包含多个数组items解析成json方法:


    $json_str = '{
    "mid": "e34ed1c2d4",
    "amount": 254,
    "currency": "USD",
    "external_order_id": "11",
    "order_type": "GTC",
    "application": "sed",
    "version": "nostrud",
    "checksum": "{checksum}",
    "gateway": "KHFTBCRC3102",
    "items": [
    {
    "currency":"USD",
    "name": "Apple iPad with Retina",
    "price": 55,
    "quantity": 1
    },
    {
    "currency":"USD",
    "name": "Beats Solo Wireless",
    "price": 199,
    "quantity": 1
    }],
    "shipping_address": {
    "first_name": "lin",
    "last_name": "lastname",
    "country": "DE",
    "city": "hamburg city",
    "address1": "this street address",
    "postal_code": "10086",
    "email": "10000@qq.com",
    "phone": "12114569874",
    "phone_country": "1",
    "state": "Bayern"
    },
    "external_data": "test"
    }';

    echo "<hr/>";
    echo "原始数据:";
    var_dump($json_str);
    echo "<pre/>";
    $de_str = json_decode($json_str);
    var_dump($de_str);
    //die;
    ---------------------------------------------------
    原始json数据:string(1057) "{
            "mid": "e34ed1c2d4",
            "amount": 254,
            "currency": "USD",
            "external_order_id": "11",
            "order_type": "GTC",
            "application": "sed",
            "version": "nostrud",
            "checksum": "{checksum}",
            "gateway": "KHFTBCRC3102",
            "items": [
            {
                "currency":"USD",
                "name": "Apple iPad with Retina",
                "price": 55,
                "quantity": 1
            },
            {
                "currency":"USD",
                "name": "Beats Solo Wireless",
                "price": 199,
                "quantity": 1
            }],
            "shipping_address": {
                "first_name": "lin",
                "last_name": "lastname",
                "country": "DE",
                "city": "hamburg city",
                "address1": "this street address",
                "postal_code": "10086",
                "email": "10000@qq.com",
                "phone": "12114569874",
                "phone_country": "1",
                "state": "Bayern"
            },
            "external_data": "test"
        }"

    ---------------------------------------------------
    json_decode 后的数据格式:

    object(stdClass)#1 (12) { ["mid"]=> string(10) "e34ed1c2d4" ["amount"]=> int(254) ["currency"]=> string(3) "USD" ["external_order_id"]=> string(2) "11" ["order_type"]=> string(3) "GTC" ["application"]=> string(3) "sed" ["version"]=> string(7) "nostrud" ["checksum"]=> string(10) "{checksum}" ["gateway"]=> string(12) "KHFTBCRC3102" ["items"]=> array(2) { [0]=> object(stdClass)#2 (4) { ["currency"]=> string(3) "USD" ["name"]=> string(22) "Apple iPad with Retina" ["price"]=> int(55) ["quantity"]=> int(1) } [1]=> object(stdClass)#3 (4) { ["currency"]=> string(3) "USD" ["name"]=> string(19) "Beats Solo Wireless" ["price"]=> int(199) ["quantity"]=> int(1) } } ["shipping_address"]=> object(stdClass)#4 (10) { ["first_name"]=> string(3) "lin" ["last_name"]=> string(8) "lastname" ["country"]=> string(2) "DE" ["city"]=> string(12) "hamburg city" ["address1"]=> string(19) "this street address" ["postal_code"]=> string(5) "10086" ["email"]=> string(12) "10000@qq.com" ["phone"]=> string(11) "12114569874" ["phone_country"]=> string(1) "1" ["state"]=> string(6) "Bayern" } ["external_data"]=> string(4) "test" }
    ---------------------------------------------------
    重点:数组直接转json方式:
    ---------------------------------------------------

    //只把数组的内层转为object
    function array_to_object3($arr) {
    if (gettype($arr) == 'array' ) {
    foreach ($arr as $k => $v) {
    if (gettype($v) == 'array') {
    $arr[$k] = (object)array_to_object3($v);
    }
    }
    return $arr;
    }else{
    return;
    }
    }
    $arrHashCode['items'] = array_to_object3($GoodsArr);
    //注: 因为json_encode (把数组转json)只转化最外层的数组,内层的数组不能转,所以内层的数组要额外转object格式
    $json_str=json_encode($arrHashCode);

    ================================================================================================
    附:

    // 数组转对象,全转化   
    public function array_to_object($arr) {
    if (gettype($arr) == 'array' ) {
    foreach ($arr as $k => $v) {
    if (gettype($v) == 'array' || getType($v) == 'object') {
    $arr[$k] = (object)$this->array_to_object($v);
    }
    }
    return (object)$arr;
    }elseif (getType($arr) == 'object') {
    return (object)$arr;
    }else{
    return;
    }
    }
    // 对象转数组
    function object_to_array($obj){
    $_arr=is_object($obj)?get_object_vars($obj):$obj;
       //内排序
    //ksort($_arr);
    $arr = null;
    foreach($_arr as $key=>$val){
    $val=(is_array($val))||is_object($val)?object_to_array($val):$val;
    $arr[$key]=$val;
    }
    return $arr;
    }
    //数组转连接符
    function array2String($arr = null){
    if(is_null($arr) or !is_array($arr))
    return false;
    $str = '';
    $arr_length = count($arr)-1;
    foreach( $arr as $key => $value ){
    if ($key=='checksum'){
    continue;
    }
    $type=gettype($value);
    if ($type=='array') {
    $tostr=json_encode($value);
    $str.=$key.'='.$tostr.'&';
    }else{
    $str.=$key.'='.$value.'&';
    }
    }
    return urldecode($str); // 必须使用urldecode()方法处理明文字符串
    }
  • 相关阅读:
    JeePlus:代码结构
    JeePlus:项目部署
    JeePlus:Maven 安装配置
    JeePlus:目录
    框架-Java:JeePlus
    Java-JSP:EL表达式
    Template-FreeMarker:模板开发指南
    Template-FreeMarker:什么是 FreeMarker?
    FreeMarker:
    Template-FreeMarker:目录
  • 原文地址:https://www.cnblogs.com/alex-13/p/13560512.html
Copyright © 2020-2023  润新知