zoukankan      html  css  js  c++  java
  • php中json_decode返回数组或对象

    http://www.3lian.com/edu/2014/02-11/128395.html

       1.json_decode()

      json_decode

      (PHP 5 >= 5.2.0, PECL json >= 1.2.0)

      json_decode — 对 JSON 格式的字符串进行编码

      说明

      mixed json_decode ( string $json [, bool $assoc ] )

      接受一个 JSON 格式的字符串并且把它转换为 PHP 变量

      参数

      json

      待解码的 json string 格式的字符串。

      assoc

      当该参数为 TRUE 时,将返回 array 而非 object 。

      返回值

      Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.

      范例

      Example #1 json_decode() 的例子

     代码如下  

    <?php 
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
    var_dump(json_decode($json)); 
    var_dump(json_decode($json, true)); 
    ?>

    上例将输出:

    object(stdClass)#1 (5) { 
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
    }

    array(5) { 
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
    }


    $data='[{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""}]'; 
    echo json_decode($data);

    结果为:

    Array ( [0] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )

      可以看出经过json_decode()编译出来的是对象,现在输出json_decode($data,true)试下

     代码如下  

    echo json_decode($data,true);

    结果:

    Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )

      可以看出 json_decode($data,true)输出的一个关联数组,由此可知json_decode($data)输出的是对象,而json_decode("$arr",true)是把它强制生成PHP关联数组.

      假如我们获取的JSON数据如下:(可以使用curl、fsockopen等方式获取)

     代码如下  

    {
     "from":"zh",
     "to":"en",
     "trans_result":[
      {
       "src":"u4f60u597d",
       "dst":"Hello"
      }
     ]
    }

      一、json_decode返回array的方式:

      json_decode($data,true);用json_decode函数返回array的方式得到:

     代码如下  

    Array
    (
        [from] => zh
        [to] => en
        [trans_result] => Array
            (
                [0] => Array
                    (
                        [src] => 你好
                        [dst] => Hello
                    )

            )

    )

      我们在PHP语言中可以用以下方法取得我们想要的值:

     代码如下  

    <?php
    $data = <<<STR
    {
     "from":"zh",
     "to":"en",
     "trans_result":[
      {
       "src":"u4f60u597d",
       "dst":"Hello"
      }
     ]
    }
    STR;
    $jsondata=json_decode($data,true);
    header("Content-Type: text/html; charset=UTF-8");
    print_r($jsondata);www.111cn.net
    echo "<br />".$jsondata['to']; //en
    echo "<br />".$jsondata['trans_result'][0]['dst']; //Hello
    ?>

      二、json_decode返回object的方式:

      json_decode($data);

      用json_decode函数返回object的方式得到:

     代码如下  

    stdClass Object
    (
        [from] => zh
        [to] => en
        [trans_result] => Array
            (
                [0] => stdClass Object
                    (
                        [src] => 你好
                        [dst] => Hello
                    )

            )

    )

      我们在PHP语言中可以用以下方法取得我们想要的值:

     代码如下  

    <?php
    $data = <<<STR
    {
     "from":"zh",
     "to":"en",
     "trans_result":[
      {
       "src":"u4f60u597d",
       "dst":"Hello"
      }
     ]
    }

    STR;
    $jsondata=json_decode($data);
    header("Content-Type: text/html; charset=UTF-8");
    print_r($jsondata);
    echo "<br />".$jsondata->from; //zh
    echo "<br />".$jsondata->trans_result[0]->src; //你好
    ?>

  • 相关阅读:
    Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)
    UI Recorder 自动化测试 回归原理(九)
    UI Recorder 自动化测试 录制原理(八)
    UI Recorder 自动化测试 整体架构(七)
    UI Recorder 自动化测试 配置项(六)
    UI Recorder 自动化测试 工具栏使用(五)
    UI Recorder 自动化测试 回归测试(四)
    UI Recorder 自动化测试 录制(三)
    UI Recorder 自动化测试工具安装问题疑难杂症解决(二)
    UI Recorder 自动化测试安装教程(一)
  • 原文地址:https://www.cnblogs.com/u0mo5/p/5039269.html
Copyright © 2011-2022 走看看