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" 

原文地址:https://www.cnblogs.com/lvhaiqing/p/10012212.html

时间: 2024-07-30 14:59:18

PHP中json_encode与json_decode的相关文章

php中json_encode和json_decode的用法

1.json_encode基本用法:数组转字符串 <?php $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_decode基本用法:字符串转数组 <?php

php中的json_encode()和json_decode()函数的一些说明

1,php定义对象字面量时,不支持直接书写,如{“a":"11","b":"22"}.这种书写方式在其他语言中被支持,在php中需要按如下方式定义: ① $a = '{“a":"11","b":"22"}'[这是json字符串,不加外面的引号则是json对象] ② $b = json_decode($a); 这样$b就是对象字面量了. 2,关于json_encode(

PHP数组和Json之间的互相转换 json_encode() 和 json_decode()

之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互.因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象.Json很好的解决了这个问题. Json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript的一个子集,这意味着JavaScript可以直接读取Json,非常方便. Json的具体形式是: 1.对象 对象是一个无序的“‘名称/值’对”集合.一个对象以“{”(左括号)开始,“}

PHP中json_encode()使用须知,JSON数组和JSON对象

body { font: 12px/1.5 Tahoma, Arial, Helvetica, sans-serif } ? 偷偷的告诉你,这是一个很不谨慎就会踩得坑 ?  如下代码 (看了一下很简单,没毛病啊,老铁) $arr = array( '0'=>'a','1'=>'b','2'=>'c','3'=>'d' ); echo json_encode($arr); 但是结果是 ["a","b","c","d

php自定义json_encode()和json_decode()函数

json数据大家应该遇到过,json_encode()和json_decode()是php5.0以后加上的内置函数,如果低版本要使用,需加扩展,很多时候我们无权改变服务器的配置,我们只能通过自定义函数来实现这两个函数,其实所有的系统内置函数,基本上我们都是可以自己来定义的. if (!function_exists('json_encode')) { function json_encode($array = array()) { if(!is_array($array)) return nul

PHP 中 json_encode中文处理、urlencode方法、post中文乱码

当使用php自带的json_encode对数据进行编码时,中文都会变成unicode,导致不可读.如:对字符串”厦门“进行json_encode后,输出的是"\u53a6\u95e8". u5fae\u535a\u6700\u65b0\u66f4\u65b0为unicode 编码大多数在 js 或者 json 里面常见~ 查询了一下,有两种方法: 1.将"\u53a6\u95e8"还原成“厦门”,使用如下的代码: $str= preg_replace("#

php 中利用json_encode和json_decode传递包含特殊字符的数据

</pre><span style="font-size:24px"></span><pre name="code" class="php"> json_decode mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] ) 接受一个 JSON 格式的字符

php中json_encode UTF-8中文乱码问题

最近在接口代码当中用到过json_encode,在网上找到说json_encode编码设置为UTF-8中文就不会乱码,经验证这办法确实是有效果的,但是不知道为什么,代码在用过一段时间之后就不太管用了.以下是自己的解决json_encode的办法.有更好的方法请分享出来吧! 第一种: 这种简单的做一个代码转换,urlcode之后再返回所需数组 我代码这样就足够了. 代码如下 复制代码 public static function encodeOperations ($array) { foreac

json_encode与json_decode的区别与用法

//json_encode顾名思义json编码,就是将数组或对象,编码成json字符串的函数 $arr['a'] = 1; $arr['b'] = 2; var_dump(json_encode($arr)); class obj { } $obj = new obj; $obj->a = 1; $obj->b = 2; var_dump(json_encode($obj)); //这两条打印结果是一样的 //string '{"a":1,"b":2}'