PHP中Json

PHP中Json

php中的json函数主要有三个:

函数 描述
json_encode() 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行解码,转换为 PHP 变量
json_last_error 返回最后发生的错误
  • 认识前提:

    • {},花括号代表包装的是一个对象数据,如:

    •  {
          "name": "黄家俊",
          "skill": "php and java"
        }
      
    • [],中括号代表包装的是一个数组,如:

    • [ {
          "name": "黄家俊",
          "skill": "php and java"
        }]
      
    • 二者是可以嵌套使用的

  • 先说json_encode(),该函数可接受三个参数,我现在基本只用到前两个

    • value:要进行编码的数据,只接受utf-8

    • options:JSON常量

    • depth:设置最大深度。 必须大于0

    • 实例:

    • <?php
        // 1、将数组转换成json
        $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
        echo json_encode($arr);
        //输出为:
        {
            "a":1,
            "b":2,
            "c":3,
            "d":4,
            "e":5
        }
        
        // 2、将对象转换成json
        class Emp {
             public $name = "";
             public $hobbies  = "";   }
         $e = new Emp();
         $e->name = "sachin";
         $e->hobbies  = "sports";
         echo json_encode($e);
        //输出结果为:
        {
          "name":"sachin",
          "hobbies":"sports"
        }
      
        // 3、将sql查询后的结果集包装成json
         $sql = "SELECT *  FROM  $tableName WHERE workNumber = '$userId'";
         $result = $con->query($sql);
         $output = $result->fetch_assoc();
      	//将outpout打包
      	echo json_encode($output);
      	//输出结果如下:
          {
              "workNumber":"00022",
              "password":"00022",
              "name":"林锦",
              "sex":"女",
              "birthday":"",
              "department":"计算机科学与技术",
              "telephone":"",
              "email":"",
              "isExperial":"0",
              "description":null,
              "avator":"1",
              "title":"0"
          }
      	
      
  • 再说json_decode(),该函数接受四个参数,目前我较常用的是前两个

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

    • assoc: 当该参数为 TRUE 时,将返回 数组 ,默认为对象。

    • depth :设置最大深度。

    • options:二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。

    • 实例:

    • <?php
         $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
      	
         //解析为对象
         $jsonObj = json_decode($json);
         var_dump(json_decode($json));
         //解析为数组
         $jsonArr = json_decode($json,true);
         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)
         }
        //获取值的方式:
      	//对于对象类型:
      	echo $jsonObj->a; //输出:1
      	
      	//对于数组:
      	echo $jsonArr['a'];  //输出:1
          
      ?>
      
    • <?php
          //对于嵌套类型的解析
          $json = '[
              {
                  "name":"qqdeliver",
                  "count":198,
                  "average":119.8889
              },
              {
                  "name":"attack",
                  "count":8146,
                  "average":205.2529
              }
          ]';
      	$obj = json_decode($json);
        //取出每一个对象
        foreach ($obj as $row){
            echo $row->name.' '.$row->count.' '.$row->average.'<br>';
        }
        //输出结果:
        qqdeliver 198 119.8889
        load 259612 141.9379
      

  • 综上:虽然json的格式有很多种,但基本上只要熟悉基础的用法就能很好地进行打包和解析了,只要理解处理的是对象或者数组就便于操作了。

posted @ 2016-11-12 23:17  mysteryH  阅读(140)  评论(0)    收藏  举报