将PHP类实例转为JSON
回答 5
浏览 6.1万
2012-03-27
我想把一个对象的内容以JSON格式回传。我对PHP没有经验,我想知道是否有预定义的函数可以做到这一点(比如json_encode()),或者你必须自己建立字符串? 当谷歌搜索 "PHP对象到JSON "时,我只找到了垃圾。
我希望toJSON返回的是什么。
{ name: "the content of $name var", code :1001, msg : 请求时出现错误}。
5 个回答
#1楼
已采纳
得票数 48
你就快到了。看看get_object_vars与json_encode的结合,你就会得到你需要的一切。做到:
应该能准确地返回你所寻找的东西。
评论中提到了get_object_vars对可见性的尊重,所以可以考虑在你的类中做类似下面这样的事情。
然后将之前的建议改为:。
这应该能解决能见度问题。
我之前试过这个方法,但它返回{}。我想我之前做错了什么,谢谢你,伙计!"。
- Reinard 2012-03-27
AFAIK get_object_vars也考虑到了它被调用的范围,所以如果你从对象内部的方法中调用它,你也将获得对私有变量的访问权。
- Felipe Ribeiro 2012-03-27
json_encode(get_object_vars($error));
将显示公共成员,不显示私人成员。
- grifos 2012-03-27
是的,get_object_vars尊重可见性,所以你可能需要添加一个 "expose "方法或类似的东西来处理这个问题。我将把这个建议添加到答案中。
- clexmond 2012-03-27
#2楼
得票数 41
注意,类的名称应该是MyError,因为第二个代码片段创建了一个MyError的新实例,而不是Error。
- Weetz 2021-09-06
#3楼
得票数 10
你需要将你的变量公开,以便它们能出现在json_encode()
上。
另外,你要找的代码是
我喜欢这个方法,因为我不知道get_object_vars有什么方法可以排除你不希望序列化的属性。
- Jim H. 2012-03-27
#4楼
得票数 5
#5楼
得票数 0
在Linux中,以下内容将在一个文件~/.config/scriptname/scriptname.conf
中写入一个给定的类条目的值,如果该文件不存在,则创建该文件,否则在加载时读取并设置回该类值。