随笔 - 301  文章 - 2  评论 - 16  阅读 - 34万

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"

posted on   Code2020  阅读(301)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2020-06-26 Java 之 JUC
2020-06-26 JAVA序列化:implements Serializable
2020-06-26 花了一个星期,我终于把RPC框架整明白了!(深度好文)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示