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" 
    我是一名大学生,喜欢学习技术,希望和你一起进步。加油
  • 相关阅读:
    把git项目放到个人服务器上
    关于fcitx无法切换输入法的问题解决
    博客变迁通知
    (欧拉回路 并查集 别犯傻逼的错了) 7:欧拉回路 OpenJudge 数据结构与算法MOOC / 第七章 图 练习题(Excercise for chapter7 graphs)
    (并查集) HDU 1856 More is better
    (并查集 不太会) HDU 1272 小希的迷宫
    (并查集 注意别再犯傻逼的错了) HDU 1213 How Many Tables
    (最小生成树 Kruskal算法) 51nod 1212 无向图最小生成树
    (并查集) HDU 1232 畅通工程
    (最小生成树 Prim) HDU 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/lvhaiqing/p/10012212.html
Copyright © 2011-2022 走看看