如何使用Zend_Json获取空Json对象?

如何使用Zend_Json获取空Json对象?,json,zend-framework,Json,Zend Framework,发件人: 空Json对象是: {} 我尝试使用json\u encode(它是PHP的正式组成部分)来获取它: 这就是我需要的。但不知何故,我必须使用Zend_json来获得它: Zend_Json::encode((object)(array())) 但结果是: {"__className": "stdClass"} 有什么想法吗 我的PHP版本5.1.6;ZF 1.7.2版对我来说,这非常有效: echo '<pre>'; print

发件人:

空Json对象是:

{}
我尝试使用
json\u encode
(它是PHP的正式组成部分)来获取它:

这就是我需要的。但不知何故,我必须使用
Zend_json
来获得它:

Zend_Json::encode((object)(array()))
但结果是:

{"__className": "stdClass"}
有什么想法吗


我的PHP版本5.1.6;ZF 1.7.2版

对我来说,这非常有效:

echo '<pre>'; print_r(Zend_Json::encode((object)array())); echo '</pre>'; exit;
// Output: {}

对我来说,这非常有效:

echo '<pre>'; print_r(Zend_Json::encode((object)array())); echo '</pre>'; exit;
// Output: {}
试一试

试一试


我发现解决方案如下:

preg_replace('/"__className":"[^"]+",/', '', $jsonString);

我发现解决方案如下:

preg_replace('/"__className":"[^"]+",/', '', $jsonString);

万一有人还在想,ZF的内部编码器会向每个对象添加_className属性
如果未安装PECL扩展json,因此函数json_encode不可用,则使用内部编码器(请参阅)

只用

return Zend\Json\Json::encode($object, false, array('disableClassNameDecoding' => true));

为了消除所有className元素

,以防任何人仍然感到疑惑,ZF的内部编码器将_className属性添加到每个对象中
如果未安装PECL扩展json,因此函数json_encode不可用,则使用内部编码器(请参阅)

只用

return Zend\Json\Json::encode($object, false, array('disableClassNameDecoding' => true));

为了摆脱所有的类名元素

为了在Zf2中解决这个问题,我在
Zend\Json\Encoder
中添加了一个
disableClassNameDecoding
选项

如果要禁用
\u className
输出,可以如下使用:


可以在上找到已修补的文件。在某个时刻,我将添加单元测试并创建一个pull请求。

为了在Zf2中解决这个问题,我在
Zend\Json\Encoder
中添加了一个
disableClassNameDecoding
选项

如果要禁用
\u className
输出,可以如下使用:


可以在上找到已修补的文件。在某个时刻,我将添加单元测试并创建一个pull请求。

它返回一个Json数组[],而不是{}它返回一个Json数组[],而不是{}thx,它们都输出{“\uu className”:“stdClass”}我的ZF版本1.7。我会问我的团队领导是否想要一个新的ZF。这很奇怪。我已经阅读了ZendFramework-1.11.5-minimal/library/Zend/Json/Encoder.php的代码,并获得了以下内容:通过编码每个公共属性将对象编码为Json。一个特殊属性被添加到名为“\uuu className”的JSON对象中,该对象包含$value类的名称。这用于将客户机上的对象解码为特定的class.thx,它们都输出{“_className”:“stdClass”}myzf version 1.7。我会问我的团队领导是否想要一个新的ZF。这很奇怪。我已经阅读了ZendFramework-1.11.5-minimal/library/Zend/Json/Encoder.php的代码,并获得了以下内容:通过编码每个公共属性将对象编码为Json。一个特殊属性被添加到名为“\uuu className”的JSON对象中,该对象包含$value类的名称。这用于将客户端上的对象解码为特定类。
return Zend\Json\Json::encode($object, false, array('disableClassNameDecoding' => true));