如何使用 Zend_json 获取空 Json 对象?
来自 http://json.org/:
空的 Json 对象是:
<前><代码>{}
我尝试使用 json_encode 来获取它(这是 PHP 的正式一部分):
json_encode((object)(array()))
这就是我所需要的。但不知怎的,我必须使用 Zend_json
来获取它:
Zend_Json::encode((object)(array()))
但结果是:
{"__className": "stdClass"}
有什么想法吗?
我的 PHP 版本 5.1.6; ZF 版本 1.7.2
From http://json.org/:
an empty Json object is:
{}
I've tried to get it with json_encode
(which is officially part of PHP):
json_encode((object)(array()))
that's what I need. But somehow I have to use Zend_json
to get it:
Zend_Json::encode((object)(array()))
but the result is:
{"__className": "stdClass"}
Any ideas?
My PHP version 5.1.6; ZF version 1.7.2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
对我来说,这完美地工作:
用 ZF 版本 1.11.3 测试
也可能:
For me this works perfectly:
Tested with ZF-Version 1.11.3
Also possible:
尝试
Try
以防万一有人仍然想知道,ZF 的内部编码器将 __className 属性添加到每个对象。
如果未安装 PECL 扩展 json,则使用内部编码器,因此 json_encode 函数不可用(请参阅 http://php.net/manual/en/function.json-encode.php )。
只需
用于删除所有 className 元素
Just in case anybody is still wondering, the internal encoder of the ZF adds the __className property to each object.
The internal encoder is used if the PECL extension json is not installed and thus the function json_encode not available (see http://php.net/manual/en/function.json-encode.php ).
Just use
to get rid of all className elements
我找到的解决方案如下:
I find the solution as below:
为了在 Zf2 中解决这个问题,我在
Zend\Json\Encoder
中添加了一个disableClassNameDecoding
选项。如果要禁用
__className
输出,可以像这样使用它:修补后的文件可以在 github。在某个时候,我将添加单元测试并创建拉取请求。
To get around this in Zf2 I have added a
disableClassNameDecoding
option toZend\Json\Encoder
.If you want to disable the
__className
output, you can use it like this:The patched file can be found on github. At some point I will add unit tests and create a pull request.