当前位置: 首页 > 面试题库 >

如何在php中json编码私有属性?

端木元青
2023-03-14
问题内容

我正在使用教义2和zend框架1.11。在《准则2》中不鼓励使用公共属性,因此我将实体属性设为私有。但是,我刚刚了解到Zend_Json ::
encode()和json_encode()不会看到私有/受保护的属性,因此不会在其输出中添加它们。

因此,当我同时使用var_dump和var_dump时,会得到一个空集,例如string(4)“ [{}]”。

事实证明,我必须编写自己的函数来进行编码。我希望有人有一个可以代替的解决方案。


问题答案:

将成员变量设置为私有的全部目的是防止它们对任何外部代码可见(序列化是一个例外,因为需要在会话之间恢复整个对象)。

代替json_encoding这个对象,您也许应该使用方法“ encode”创建一个“
encodeable”接口。这将返回此对象所需的任何成员的json编码字符串。这为您提供了更多控制权,因为您可以选择要序列化的成员,而不是序列化所有成员,甚至对其执行操作以序列化其他数据。

实际上,您可以实现JsonSerializable直接与兼容的界面json_encode

class MyClass implements \JsonSerializable
{
    public function jsonSerialize()
    {
        return get_object_vars($this);
    }
}

$myObject = new MyClass();
echo json_encode($myObject);


 类似资料:
  • 问题内容: json_decode函数不是PHP 5.1的一部分,所以我不能使用它。此版本还有其他功能吗? 问题答案: 在PHP 5.2之前,您可以使用JSON PECL扩展名。 实际上,它是已集成到PHP 5.2 _( 引用 )中_的扩展: 从PHP 5.2.0开始,JSON扩展默认捆绑并编译为PHP。 其他一些解决方案是使用PHP开发的某些组件。 前一段时间(大约一年前),我使用Zend Fr

  • 我在MySql中有两个表 部分 类别 如何从PHP解码JSON以获得如下结果: {节:[ {节名:"节1",分类列表:[{分类名称:"分类1"},{分类名称:"分类2"}]}, {节名:"节1",分类列表:[{分类名称:"#########################################################################################

  • 问题内容: 我有一个看起来像这样的JSON字符串: 什么是解码此和地点PHP ,,,,和到会话变量? 到目前为止,我已经尝试过了,但是没有用: 谢谢! 问题答案: 是您了解JSON结构的朋友。 结果是:

  • 问题内容: 我需要为正在使用的例程传回JSON结果。在中,如何对数组进行JSON编码? 问题答案:

  • 问题内容: 在PHP中,我用于在HTML5数据属性中回显数组。根据JSON的要求-并生成- 用双引号引起来的值。为此,我将数据属性用单引号引起来,例如: 如您所见,最后一个标记(测试的)包含一个单引号,并且不带任何选项的使用会导致解析问题。 因此,我使用该参数,并且解析很好,因为我的单引号已编码,但我想知道:这样做有不利之处吗? 问题答案: 您需要将HTML转义数据回显到HTML:

  • 问题内容: 我有以下json字符串,我只想从中检索电子邮件地址。我如何在php中做到这一点? 问题答案: 另一种错误的做法是像这样访问它: