php操作JSON格式数据的实现代码


Posted in PHP onDecember 24, 2011

知识点:
1、JSON数据格式介绍
2、对数据编码成JSON格式
3、对JSON数据进行解码,并操作
JSON数据格式表示方式如下:

{ "programmers": [ 
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }, 

{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" }, 

{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } 

], 

"authors": [ 

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, 

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, 

{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" } 

], 

"musicians": [ 

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, 

{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } 

] }

用php将数据编码成JSON格式:
<?php 
//php中用数组表示JSON格式数据 
$arr = array( 
'firstname' => iconv('gb2312', 'utf-8', '非诚'), 
'lastname' => iconv('gb2312', 'utf-8', '勿扰'), 
'contact' => array( 
'email' =>'fcwr@3water.com', 
'website' =>'https://3water.com', 
) 
); 
//将数组编码成JSON数据格式 
$json_string = json_encode($arr); 
//JSON格式数据可直接输出 
echo $json_string; 
?>

需要指出的是,在非UTF-8编码下,中文字符将不可被encode,结果会出来空值,所以,如果你使用 gb2312编写PHP代码,那么就需要将包含中文的内容使用iconv或者mb转为UTF-8再进行json_encode。
输出:(JSON格式)
{"firstname":"\u975e\u8bda","lastname":"\u52ff\u6270","contact":{"email":"fcwr@3water.com","website":"http:\/\/3water.com"}}
用php对JSON数据进行解码并处理:
<?php 
//php中用数组表示JSON格式数据 
$arr = array( 
'firstname' => iconv('gb2312', 'utf-8', '非诚'), 
'lastname' => iconv('gb2312', 'utf-8', '勿扰'), 
'contact' => array( 
'email' =>'fcwr@3water.com', 
'website' =>'https://3water.com', 
) 
); 
//将数组编码成JSON数据格式 
$json_string = json_encode($arr); 
//将JSON格式数据进行解码,解码后不是JSON数据格式,不可用echo直接输出 
$obj = json_decode($json_string); 
//强制转化为数组格式 
$arr = (array) $obj; 
//按数组方式调用里面的数据 
echo iconv('utf-8','gb2312',$arr['firstname']); 
echo '</br>'; 
//输出数组结构 
print_r($arr); 
?>

输出:
非诚
Array ( [firstname] => ??璇? [lastname] => ?挎? [contact] => stdClass Object ( [email] => fcwr@3water.com [website] => https://3water.com ) )
PHP 相关文章推荐
PHP数据缓存技术
Feb 14 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
PHP中删除变量时unset()和null的区别分析
Jan 27 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
CI框架扩展系统核心类的方法分析
May 23 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
php UNIX时间戳用法详解
Feb 16 PHP
php文件怎么打开 如何执行php文件
Dec 21 #PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 #PHP
php自动注册登录验证机制实现代码
Dec 20 #PHP
php4与php5的区别小结(配置异同)
Dec 20 #PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 #PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 #PHP
PHP定时执行计划任务的多种方法小结
Dec 19 #PHP
You might like
第七节 类的静态成员 [7]
2006/10/09 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
php fread函数使用方法总结
2019/05/28 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
交通事故私了协议书
2014/04/16 职场文书
法定代表人身份证明书
2014/09/10 职场文书
车辆委托书范本
2014/10/05 职场文书
工作自我推荐信范文
2015/03/25 职场文书
python实现Nao机器人的单目测距
2021/09/04 Python
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技