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


Posted in PHP onNovember 20, 2016

一,json语法( php中的json_decode($json)中的$json要符合json语法格式 )

① JSON可以表示三种类型的值

1,简单值。包括整型,字符串型,布尔值和null。例如:5,"hello world",true,null都是有效的JSON数据。其中JSON字符串必须使用双引号(单引号会导致语法错误)。

2,对象。如,{"name":"tony","age":15}。说明①要求属性必须用双引号(不加或者单引号都是错误的)②值可以是简单值(注意若值为字符串,必须用双引号,不能用单引号),也可以是复杂类型的值(对象或数组)。

3,数组。如,[25,true,"tony"]。说明:数组的值也可以是任意类型。

二,php定义对象字面量时,不支持直接书写,如{"a":"11","b":"22"}。这种书写方式在其他语言中被支持,在php中需要按如下方式定义:

$a = '{"a":"11","b":"22"}' ;【这是json字符串,不加外面的单引号则是json对象】

$b = json_decode($a);

这样$b就是对象字面量了。

三,上述三种数值类型经过json_encode($value)转化后,会输出json格式(此时类型为字符串),如"hello",{},[]。输出的结果可以在其他地方(javascrip,ios,java,php等等)被解析使用。

四,php中改进后的json_encode()和json_decode()函数,支持汉语(原生的不支持汉语)

注:php中不可直接改写原生函数,需要写在类里,作为类的一个方法

 

static function json_encode($input)
{
// 从 PHP 5.4.0 起, 增加了这个选项.
if (defined('JSON_UNESCAPED_UNICODE')) {
return json_encode($input, JSON_UNESCAPED_UNICODE);
}

if (is_string($input)) {
$text = $input;
$text = str_replace('\\', '\\\\', $text);
$text = str_replace(
array("\r", "\n", "\t", "\""),
array('\r', '\n', '\t', '\\"'),
$text);
return '"' . $text . '"';
} else if (is_array($input) || is_object($input)) {
$arr = array();
$is_obj = is_object($input) || (array_keys($input) !== range(0, count($input) - 1));
foreach ($input as $k => $v) {
if($v == null){
$v = 'null';
}
if ($is_obj) {
$arr[] = self::json_encode($k) . ':' . self::json_encode($v);
} else {
$arr[] = self::json_encode($v);
}
}

if ($is_obj) {
return '{' . join(',', $arr) . '}';
} else {
return '[' . join(',', $arr) . ']';
}
} else {
return $input . '';
}
}

以上这篇关于php中的json_encode()和json_decode()函数的一些说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
php防止SQL注入详解及防范
Nov 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
PHP开启opcache提升代码性能
Apr 26 PHP
php类的定义与继承用法实例
Jul 07 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 #PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 #PHP
php中strtotime函数性能分析
Nov 20 #PHP
php的socket编程详解
Nov 20 #PHP
PHP内置加密函数详解
Nov 20 #PHP
php PDO异常处理详解
Nov 20 #PHP
php.ini中date.timezone设置详解
Nov 20 #PHP
You might like
PHP面向对象编程快速入门
2006/12/14 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Python实现二维数组输出为图片
2018/04/03 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
Python多线程的退出控制实现
2020/08/10 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
澳大利亚百货公司:David Jones
2018/02/08 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
Android面试宝典
2013/08/06 面试题
C#可否对内存进行直接的操作
2015/02/26 面试题
后勤自我鉴定
2013/10/13 职场文书
蓝颜请假条
2014/04/11 职场文书
西柏坡导游词
2015/02/05 职场文书
自我推荐信怎么写
2015/03/24 职场文书
高三化学教学反思
2016/02/22 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang