zoukankan      html  css  js  c++  java
  • PHP中json_encode与json_decode

    一、json_encode() 对变量进行JSON编码,

    • 语法: json_encode ( $value [, $options = 0 ] )
    • 注意:1、$value为要编码的值,且该函数只对UTF8编码的数据有效;

          2、options:由以下常量组成的二进制掩码:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP,                                       JSON_HEX_APOS, JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT;

          3、第二个参数一般不需要;

          4、json数据其实就是一个string,可以用var_dump()打印出来看数据类型;

          5、执行成功返回JSON数据,否则返回FALSE。

    • 示例:
    $book = array('a'=>'xiyouji','b'=>'sanguo','c'=>'shuihu','d'=>'hongloumeng');
    $json = json_encode($book);
    echo $json;

      浏览器打印出的结果如下:

    {"a":"xiyouji","b":"sanguo","c":"shuihu","d":"hongloumeng"}

    二、json_decode() 对JSON数据进行解码,转换为PHP变量

    • 语法:json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
    • 注意:1、$json 为待解码的数据,必须为utf8编码的数据;

          2、$assoc 值为TRUE时返回数组,FALSE时返回对象;

          3、$depth 为递归深度;

          4、$option 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING;

          5、一般只用前面两个参数,如果要数据类型的数据要加一个参数true。

    • 示例:
       
      $book = array('a'=>'xiyouji','b'=>'sanguo','c'=>'shuihu','d'=>'hongloumeng');
              $json = json_encode($book);
              
              $array = json_decode($json,TRUE);
              $obj = json_decode($json);
              var_dump($array);
              var_dump($obj);
       

      浏览器打印出的结果如下:

      array(4) { ["a"]=> string(7) "xiyouji" ["b"]=> string(6) "sanguo" ["c"]=> string(6) "shuihu" ["d"]=> string(11) "hongloumeng" }
      object(stdClass)#2 (4) { ["a"]=> string(7) "xiyouji" ["b"]=> string(6) "sanguo" ["c"]=> string(6) "shuihu" ["d"]=> string(11) "hongloumeng" } 

      两个结果看起来没多大区别,但调用里面的元素时,array和obj的方式是不同的。 

    $book = array('a'=>'xiyouji','b'=>'sanguo','c'=>'shuihu','d'=>'hongloumeng');
            $json = json_encode($book);
            
            $array = json_decode($json,TRUE);
            $obj = json_decode($json);
            var_dump($array['b']);//调用数组元素
            echo '<br/>';
            var_dump($obj->c);//调用对象元素
     

       打印结果如下:

    string(6) "sanguo"
    string(6) "shuihu" 
    我是一名大学生,喜欢学习技术,希望和你一起进步。加油
  • 相关阅读:
    Codeforces 992C(数学)
    Codeforces 990C (思维)
    Codeforces 989C (构造)
    POJ 1511 Invitation Cards(链式前向星,dij,反向建边)
    Codeforces 1335E2 Three Blocks Palindrome (hard version)(暴力)
    POJ 3273 Monthly Expense(二分)
    POJ 2566 Bound Found(尺取前缀和)
    POJ 1321 棋盘问题(dfs)
    HDU 1506 Largest Rectangle in a Histogram(单调栈)
    POJ 2823 Sliding Window(单调队列)
  • 原文地址:https://www.cnblogs.com/lvhaiqing/p/10012212.html
Copyright © 2011-2022 走看看