首页 / JSON / PHP对象为JSON格式
PHP对象为JSON格式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP对象为JSON格式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1697字,纯文字阅读大概需要3分钟。
内容图文
这个问题已经在这里有了答案: > PHP json_encode class private members 9个
考虑这个简化的类:
class foo {
private $fooVar;
public getFooVar(){
}
}
$fooObj = new foo();
想要我想要/需要做的就是将其转换为JSON格式,所以我想到了
echo json_encode($fooObj);
但是它不起作用,我没有fooVar和即时消息,因为$fooVar是私有的.
还有其他方法可以做到这一点而不必妥协并使$fooVar公开吗?
谢谢一群!
解决方法:
如果您使用的是PHP 5.3(或更早版本),您将无法真正轻松地完成您所要求的工作.您将不会获得以JSON编码的方法,因为JSON是一种数据格式并且不包含函数,并且您不会获得该属性,因为它是一个私有属性.您已经知道了很多,但是值得重申一下,您说得对,这并不容易.在这种情况下,即使将getter用作魔术__get()方法将其变成只读的公共属性,也无法正常工作.
在PHP 5.3中,可以使用几种解决方法.
>反思. PHP包含一个Reflection API,它使您可以访问有关对象和类的详细信息,包括从私有成员中读取值.但是,显然,这将意味着编写大量代码以获取价值,而且也不会很快.
>在类内编写json_encode调用.这样,您可以包含私有财产.我建议在对象内部使用get_object_vars($this)以JSON友好的方式获取私有属性.
如果您使用的是PHP 5.4,则还有其他选择:
> PHP 5.4引入了JsonSerializable接口.将实现JsonSerializable实现到您的类,并编写一个名为jsonSerialize()的方法.此方法应返回要包含在JSON字符串中的数据.您可以包括或排除所需的任何公共或私人财产.
PHP 5.5尚未发布,但它将为您添加另一个选项:
> PHP 5.5将引入一种更复杂的语法来定义属性,这将使您可以将属性定义为公共但只读的,或者在getter和setter中为它们包括更复杂的逻辑,但仍将它们作为属性.它将像现在__get()和__set()方法一样工作,但是将变量显式定义为属性,这意味着JSON序列化程序应该可以访问它们,而当前使用__get()则不能.
[编辑]-注意,以上段落不正确;所描述的功能未纳入PHP 5.5版本.现在还无法断定它是否会进入5.6.
希望能有所帮助.
内容总结
以上是互联网集市为您收集整理的PHP对象为JSON格式全部内容,希望文章能够帮你解决PHP对象为JSON格式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。