内容简介:昨天funlake提醒了我, 应该把一些PHP的新动向传播一下.恭喜候鸟加入了pdt,有什么新进展别忘了给咱cn phper通报一下呀。那么, 今天为大家介绍一下5.4中对Json做的一个改进.
昨天funlake提醒了我, 应该把一些 PHP 的新动向传播一下.
恭喜候鸟加入了pdt,有什么新进展别忘了给咱cn phper通报一下呀。
那么, 今天为大家介绍一下5.4中对Json做的一个改进.
Json是Ajax应用中最为通用的数据传输格式(协议), 主流的编程语言都带有对Json的支持, 在PHP中, 有json_encode/json_decode, 可以很方便的构造Json数据格式.
- echo json_encode ( array ( 1 , 2 , 3 , 4 ));
- ?>
- //[1,2,3,4]
也可以Json化一个对象:
- $o = new stdclass ;
- $o -> a = 42 ;
- echo json_encode ( $o );
- ?>
- //{"a":42}
但这样就有个问题, 现实生活中的对象是很复杂的, Json的这种默认只对属性做操作的做法有的时候是不能解决问题的, 比如我们希望通过私有成员来做一些计算得到最后的Json化数据, 又或者我们希望用一个字符串来代替一个object.
在以前, 那你只能自己拼凑Json串了. 不过感谢Sara, 在5.4中, Json新增了一个JsonSerializable接口, 任何实现了这个接口的类, 需要定义一个jsonSerialize()方法, 这个方法会在对这个类的对象做Json化的时候被调用, 这个时候你就可以在这个方法内 , 随意调整最终的Json化的结果:
- class JsonTest implements JsonSerializable {
- private $a , $b ;
- public function __construct ( $a , $b ) {
- $this -> a = $a ;
- $this -> b = $b ;
- }
- public function jsonSerialize () {
- return $this -> a + $this -> b ;
- }
- }
- echo json_encode ( new JsonTest ( 23 , 42 ));
- ?>
- //65
下面是个稍微复杂点的例子:
- $data = array (
- new stdClass ();
- new JsonTest ( 1 , 2 ),
- new JsonTest ( 3 , 4 ),
- array ( 5 , 6 )
- );
- echo json_encode ( $data );
- ?>
- //[{},3,7,[5,6]]
最后提醒一下, PHP 5.4还处于开发阶段, 在最终release之前, 这些特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.
谢谢
PS: 这个特性最初由Johannes在他自己的blog中介绍: http://schlueters.de/blog/archives/135-Jason,-let-me-help-you!.html
觉得文章有用?立即:和朋友一起 共学习 共进步!
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 接口测试及常用接口测试工具
- Java中的Comparable接口和Comparator接口
- Java 的 Closeable 接口和 Cloneable 接口
- python接口自动化测试之接口数据依赖
- Kotlin 接口与 Java8 新特性接口
- Java接口全链路优化:如何降低接口RT时长
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
复杂网络理论及其应用
汪小帆、李翔、陈关荣 / 清华大学出版社 / 2006 / 45.00元
国内首部复杂网络专著 【图书目录】 第1章 引论 1.1 引言 1.2 复杂网络研究简史 1.3 基本概念 1.4 本书内容简介 参考文献 第2章 网络拓扑基本模型及其性质 2.1 引言 2.2 规则网络 2.3 随机图 2.4 小世界网络模型 2.5 无标度网络模型 ......一起来看看 《复杂网络理论及其应用》 这本书的介绍吧!
Base64 编码/解码
Base64 编码/解码
XML 在线格式化
在线 XML 格式化压缩工具