当前位置: 首页 > 编程笔记 >

浅析PHP中json_encode与json_decode的区别

郭思淼
2023-03-14
本文向大家介绍浅析PHP中json_encode与json_decode的区别,包括了浅析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"

到此这篇关于浅析PHP中json_encode与json_decode的区别的文章就介绍到这了,更多相关PHP json_encode与json_decode内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 问题内容: 如何将带有国际字符的json编码的字符串保存到数据库,然后在浏览器中解析解码的字符串? 问题答案: 这是一个编码问题。看起来在某些时候,数据被表示为ISO-8859-1。 流程的每个部分都需要UTF-8编码。 数据库连接 数据库表 您的PHP文件(如果您在文件中使用特殊字符,如上面的示例所示) 您输出的标题

  • 本文向大家介绍java与php的区别浅析,包括了java与php的区别浅析的使用技巧和注意事项,需要的朋友参考一下 java的简单介绍 Java是一种通用的面向对象编程语言,旨在生成可在任何地方使用相同代码的代码。这种编程语言是基于类的,面向对象的和人类可读的。它支持服务器端和客户端。 Java既可以编译也可以解释。Java编译器将源代码转换为字节码,然后java解释器生成机器代码,该机器代码由运

  • 本文向大家介绍浅析Javascript中“==”与“===”的区别,包括了浅析Javascript中“==”与“===”的区别的使用技巧和注意事项,需要的朋友参考一下 之前使用JavaScript的时候,时不时的会遇到使用 == 和 === 这两个符号来判断两个变量是否相等。但是对于这两个符号的差别一直没有去调查。今天又遇到了 === 这个符号,所以决定去查一下,究竟这两者有什么区别。 在Java

  • 本文向大家介绍浅析PHP中的i++与++i的区别及效率,包括了浅析PHP中的i++与++i的区别及效率的使用技巧和注意事项,需要的朋友参考一下 先看看基本区别: i++ :先在i所在的表达式中使用i的当前值,后让i加1 ++i :让i先加1,然后在i所在的表达式中使用i的新值 看一些视频教程里面写for循环的时候都是写 ++i 而不是 i++,上网搜索了一下,原来有效率问题 ++i相当于下列代码

  • 问题内容: 观察这个小脚本: PHP为什么将JSON对象变成一个类? 如果不是一个数组,它是那么产生完全相同的结果? 问题答案: 采取在的第二个参数仔细看看在https://secure.php.net/json_decode

  • 本文向大家介绍python中eval与int的区别浅析,包括了python中eval与int的区别浅析的使用技巧和注意事项,需要的朋友参考一下 python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出。eval()函数将去掉字符串的两个引号,将其解释为一个变量。 作用: a. 处理