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

在PHP中的对象上使用json_encode(无论范围如何)

滑畅
2023-03-14
问题内容

我正在尝试将对象列表输出为json,并想知道是否存在一种使对象可用的方法json_encode?我得到的代码看起来像

$related = $user->getRelatedUsers();
echo json_encode($related);

现在,我只是遍历用户数组,并将它们分别导出到数组中,json_encode以便对我来说变成可用的json。我已经尝试过使对象可迭代,但json_encode无论如何似乎都跳过了它们。

编辑 :这是var_dump();

php > var_dump($a);
object(RedBean_OODBBean)#14 (2) {
  ["properties":"RedBean_OODBBean":private]=>
  array(11) {
    ["id"]=>
    string(5) "17972"
    ["pk_UniversalID"]=>
    string(5) "18830"
    ["UniversalIdentity"]=>
    string(1) "1"
    ["UniversalUserName"]=>
    string(9) "showforce"
    ["UniversalPassword"]=>
    string(32) ""
    ["UniversalDomain"]=>
    string(1) "0"
    ["UniversalCrunchBase"]=>
    string(1) "0"
    ["isApproved"]=>
    string(1) "0"
    ["accountHash"]=>
    string(32) ""
    ["CurrentEvent"]=>
    string(4) "1204"
    ["userType"]=>
    string(7) "company"
  }
  ["__info":"RedBean_OODBBean":private]=>
  array(4) {
    ["type"]=>
    string(4) "user"
    ["sys"]=>
    array(1) {
      ["idfield"]=>
      string(2) "id"
    }
    ["tainted"]=>
    bool(false)
    ["model"]=>
    object(Model_User)#16 (1) {
      ["bean":protected]=>
      *RECURSION*
    }
  }
}

这是json_encode给我的:

php > echo json_encode($a);
{}

我最终得到了这样的结果:

    function json_encode_objs($item){   
        if(!is_array($item) && !is_object($item)){   
            return json_encode($item);   
        }else{   
            $pieces = array();   
            foreach($item as $k=>$v){   
                $pieces[] = "\"$k\":".json_encode_objs($v);   
            }   
            return '{'.implode(',',$pieces).'}';   
        }   
    }

它需要装满这些对象的数组或仅是单个实例,然后将它们转换为json-
我用它代替了json_encode。我敢肯定有些地方我可以做得更好,但是我希望json_encode能够检测何时根据对象的暴露接口迭代对象


问题答案:

在RedBeanPHP 2.0中,有一个mass-export函数,该函数将整个bean集合变成数组。这适用于JSON编码器。

json_encode( R::exportAll( $beans ) );


 类似资料:
  • 问题内容: 我设法绘制了数据,并想为其添加背景图像(地图)。数据是按长/纬度值绘制的,我也具有图像三个角(左上角,右上角和左下角)的长/纬度值。 我试图弄清楚如何在imshow中使用’extent’选项。但是,我发现的示例并未说明如何为每个角指定x和y(在我的情况下,我具有三个角的信息)。 将图像添加到绘图中时,如何为图像指定三个角的位置? 谢谢 问题答案: 在当前轴的坐标中指定要粘贴图像的矩形的

  • 问题内容: 有人可以建议如何在PHP中启用json_encode函数吗? 我已经全新安装了Centos 5.6,并且刚刚安装了Virtualmin。 有人知道下一步该怎么做吗? 问题答案: 如http://www.php.net/manual/en/json.requirements.php 要求 无需安装即可使用这些功能。它们是PHP核心的一部分。 只是PHP> = 5.2.0 编辑 :在评论中

  • NutIoc 实现了 Ioc2 接口,它继承自 Ioc 接口,并多出了两个方法。 一个允许你自行添加自定义的值类型,另一个是允许你在获取对象时,链入自己的上下文环境 请阅读 org.nutz.ioc.IocContext 的接口文档, 你可以根据需要实现这个上下文接口 这个设计有什么用? 比如,在一个 Web 应用中,你希望在会话中保存一个数据源,你不希望这个数据源保存在 Application

  • 更改TestResource 并向QueryFactory添加 我理解使用请求范围需要。然而,当我运行它时,我得到一个异常,它告诉我 我看不出哪里出了问题。你能给我指出这个配置应该如何正确地完成吗?

  • 问题内容: 我凝视着监视器已经太久了,不要问:我如何使用 Elastic Search PHP库* 执行 多个范围查询 ? * 我正在尝试根据 价格 标准(小于或大于)和类别内的 产品数量 (最少2个产品,仅2个产品,等等)查询我的索引。 虽然单独工作正常,但结合 我正在努力找到一个不错的近期示例,该示例涵盖ES v0.9之后的此场景,但在我的v1.4.2上却失败了。 问题答案: 您的回答是正确的

  • 问题内容: 如何从其父范围调用在子范围中定义的方法? http://jsfiddle.net/wUPdW/ 问题答案: 您可以从父母到孩子使用: 工作jsfiddle:http : //jsfiddle.net/wUPdW/2/ 更新 :还有另一个版本,耦合性更低,更易于测试: jsfiddle:http : //jsfiddle.net/uypo360u/