关于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 syntax error, unexpected $end 错误的一种原因及解决
Oct 25 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
允许phpmyadmin空密码登录的配置方法
May 29 PHP
php 广告调用类代码(支持Flash调用)
Aug 11 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
ThinkPHP的URL重写问题
Jun 22 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
PHP中使用BigMap实例
Mar 30 PHP
php防止表单重复提交实例讲解
Feb 11 PHP
PHP实现读取文件夹及批量重命名文件操作示例
Apr 15 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
一个好用的分页函数
2006/11/16 PHP
安装APACHE
2007/01/15 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
JavaScript的目的分析
2007/01/05 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
vue实现文件上传功能
2018/08/13 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
Django之PopUp的具体实现方法
2019/08/31 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
酒店节能减排方案
2014/05/26 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL