关于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 相关文章推荐
用PHP连接Oracle for NT 远程数据库
Oct 09 PHP
dedecms模版制作使用方法
Apr 03 PHP
PHP下对数组进行排序的函数
Aug 08 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
Laravel学习教程之路由模块
Aug 18 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 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
html中select语句读取mysql表中内容
2006/10/09 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php读取csc文件并输出
2015/05/21 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
js jquery数组介绍
2012/07/15 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python中使用logging模块打印log日志详解
2015/04/05 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python交互模式基础知识点学习
2020/06/18 Python
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
.net工程师笔试题
2012/06/09 面试题
国贸专业个人求职信分享
2013/12/04 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
小学生家长寄语
2014/04/02 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
MySQL创建管理KEY分区
2022/04/13 MySQL
Go gorilla/sessions库安装使用
2022/08/14 Golang