【问题标题】:PHP json_decode: Object to Associative ArrayPHP json_decode:对象到关联数组
【发布时间】:2011-08-24 04:33:08
【问题描述】:

json_decode 的语法是:

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

注意第二个参数$assoc,它是可选的,默认为false。 当该参数为true时,json_decode将对象转换为关联数组。

我的问题是: 是否存在您想要将返回的对象转换为关联数组的情况?

【问题讨论】:

  • 我会添加自定义方法以允许对 json 进行序列化和反序列化(如 Serializable 接口)。这允许从对象正确构造 json 对象和 json 对象。

标签: php associative-array json


【解决方案1】:

当你想把它转换成一个对象时……

【讨论】:

    【解决方案2】:

    如果一个函数返回一个关联数组,在 PHP 5.4 之前你不能直接访问它的成员作为 foo()['xxx']。但是,如果它返回一个对象,您可以通过 foo()->xxx 访问成员。

    当然,您可能还有一些库要求您将返回值作为对象访问。

    【讨论】:

    • 虽然这不再是正确的,但它是在发布问题时(以及在编写 json_decode() 时),所以这是对默认值的一个很好的解释。
    【解决方案3】:

    就我个人而言,我总是要求一个关联数组,并且发现它比 $assoc=false 时返回的对象更容易使用。

    但我会说,我见过的大多数其他人的代码(主要是各种 Web 服务客户端库)都使用 json_decode 和 $assoc=false 和对象而不是关联数组。不过,我认为这主要是一个偏好问题,因为我没有看到选择一种或另一种方式的任何特别充分的理由。

    抱歉没有回答:-)

    【讨论】:

      【解决方案4】:

      在我看来,这是一种强调列表(在 php 中由数字数组表示)和实体(对象)之间差异的方法。这可能更具可读性,因为可以读取使用的访问器([]->)访问了哪些类型的数据。

      【讨论】:

        【解决方案5】:

        您需要传递一个具有真值的额外参数。 json_decode($p,true);

        【讨论】:

          猜你喜欢
          • 2015-07-16
          • 1970-01-01
          • 1970-01-01
          • 2022-06-30
          • 1970-01-01
          • 2021-07-20
          • 2012-08-30
          • 2014-04-02
          • 1970-01-01
          相关资源
          最近更新 更多