欢迎您来到,码代码-李雷博客        登录  |  注册

PHP中json_encode()和json_decode()函数使用详解(中文编码)

更新:2020-03-29 09:06:38
人气:341
来源:本站原创
A+

JSON在写接口传递信息时经常会用到,而且用到的地方比较广泛,今天就详细说说json_encode()和json_decode()函数的使用方法。

首页明确一下,页面的编码要采用utf-8编码模式,因为测试内容中有中文,防止测试时看不到效果,显示空白!

一、首先,json_encode(),将数据转为JSON格式,有两种类型的数据可以转为JSON。

1.对象

定义一个class,new是一个对象,可以将对象转为json格式

<?
   class json_test {
       public $name = "";
       public $web  = "";
       public $keyword = "";
   }
   $json = new json_test();
   $json->name = "李雷博客";
   $json->web  = "www.mdaima.com";
   $json->keyword = "PHP博客";
 
   echo json_encode($json);
   echo json_encode($json, JSON_UNESCAPED_UNICODE);//解决中文转义的问题
?>

输出结果:

{"name":"\u674e\u96f7\u535a\u5ba2","web":"www.mdaima.com","keyword":"PHP\u535a\u5ba2"}
{"name":"李雷博客","web":"www.mdaima.com","keyword":"PHP博客"}

说明:其中\u674e这些因为是中文自动转换为了以 \u+数字的unicode数据。如果想直接输出中文也是可以的,加上JSON_UNESCAPED_UNICODE参数即可!

2.数组

定义一个键值对数组

<?php
   $json_arr = array('a' => '李雷博客', 'b' => 'mdaima.com', 'c' => 'PHP博客', 'd' => 10000);
   echo json_encode($json_arr);
   echo json_encode($json_arr, JSON_UNESCAPED_UNICODE);//防止中文转义
?>

输出结果:

{"a":"\u674e\u96f7\u535a\u5ba2","b":"mdaima.com","c":"PHP\u535a\u5ba2","d":10000}
{"a":"李雷博客","b":"mdaima.com","c":"PHP博客","d":10000}

由此我们得出两个结论转为json格式数据的类型是对象和键值对数组。两者转换后的结果是一样的。

二、其次,json_decode(),对 JSON 格式的字符串进行解码,并转换为 PHP 变量。

<?php
   $json = '{"a":"\u674e\u96f7\u535a\u5ba2","b":"mdaima.com","c":"PHP\u535a\u5ba2","d":10000}';
 
   var_dump(json_decode($json));
   var_dump(json_decode($json, true));//设置参数为true时,将返回数组,否则为对象。默认为false
?>

将刚才用json_encode转换后的结果进行json_decode()操作。

输出结果:

object(stdClass)#1 (4) {    
    ["a"]=>    
    string(12) "李雷博客"    
    ["b"]=>    
    string(10) "mdaima.com"    
    ["c"]=>    
    string(9) "PHP博客"    
    ["d"]=>    
    int(10000)    
}  
  
array(4) {    
    ["a"]=>    
    string(12) "李雷博客"    
    ["b"]=>    
    string(10) "mdaima.com"    
    ["c"]=>    
    string(9) "PHP博客"    
    ["d"]=>    
    int(10000)    
}

这里我们知道了,第一个打印结果是一个对象,第二个是一个键值对数组。

这样我们也可以理解json_decode()的第二个参数,当参数值为true时,返回数组。当参数值为false(默认为false)时,返回对象。

打赏

取消

感谢您的支持,我会继续努力的!

扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

推荐的文章
# 发表我的评论
  /     /  
# 最近评论
暂时还没有评论,要不要说点什么?
  本站PHP博客源代码下载
  本站PHP博客源代码下载
本站使用的PHP博客系统采用PHP和MySql开发,程序开发完全是因为个人爱好,是自己纯手写PHP源代码,未采用任何PHP框架,现已免费开源共享提供给大家下载!
PHP博客下载
  联系博主
QQ:858353007   个人微信号:lileihot123
网站地图
会员服务
关于我们
QQ:858353007
 
广告服务
加我微信
移动端访问
 
 
Copyright © 2014- 2020 www.mdaima.com All Rights Reserved.
李雷博客,专注PHP经验、PHP教程及PHP源代码开源下载分享的PHP博客!   ICP备案号:京ICP备10202169号