内容简介:昨天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技术博客大学习
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法设计与分析基础
Anany Levitin / 清华大学出版社 / 2007-11 / 59.00元
作者基于丰富的教学经验,开发了一套对算法进行分类的新方法。这套方法站在通用问题求解策略的高度,能对现有的大多数算法进行准确分类,从而使读者能够沿着一条清晰的、一致的、连贯的思路来探索算法设计与分析这一迷人领域。本书作为第2版,相对第1版增加了新的习题,还增加了“迭代改进”一章,使得原来的分类方法更加完善。 本书十分适合作为算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要......一起来看看 《算法设计与分析基础》 这本书的介绍吧!