将Mongo db结果转换为JSON

时间:2015-12-15 14:39:43

标签: php json mongodb phalcon

我正在使用Phalcon框架和MongoDB数据库,这个项目是一个宁静的项目,我需要每个控制器的json输出,我在MongoDB数据库中有一个集合,当我阅读它并转换为json时,我得到的结果像下面:

{
    "_meta": {
        "status": "SUCCESS",
        "count": 1
    },
    "records": {
        "_id": {
            "$id": "5659c36e9dd39ed34024f9a1"
        },
        "name": "main",
        "cities": [
            {
                "_id": {
                    "$id": "5659c36e9dd39ed34024f9a2"
                },
                "name": "child1"
            },
            {
                "_id": {
                    "$id": "5659c36e9dd39ed34024f9bd"
                },
                "name": "child2"
            },
            {
                "_id": {
                    "$id": "5659c36e9dd39ed34024f9be"
                },
                "name": "child2"
            }
        ]
    }
}

正如你所看到的,我们有一个"$id"名字的字段,我觉得它不好,因为我在移动应用程序中使用这个结果,当我想要它时,它会给我带来问题将此json解析为POJO个类 我知道为什么我们在输出中有“$ id”,但我不知道如何替换它,我不想使用str_replaceforeach语法,我相信{{1} Phalcon中的{或phalcon模型应该有一个解决方案。 解决办法是什么?

2 个答案:

答案 0 :(得分:1)

以递归方式遍历对象并取消设置属性

答案 1 :(得分:1)

我猜是这样的: 如果我们假设您从db获得的对象是$ result:

// Object from db
$result;

// Get only records
$records = $result->records;

// Unset undesired properties recursively
$this->iterateRecursively($records);

public function iterateRecursively($object, $properties = ['_id'])
{
    foreach ($object as $key => $value){

         // Unset undesired properties
         foreach ($properties as $property){
              if ($key === $property){
                 unset($object->{$property});
             }
         }

         // Dig deeper into object
         if (is_object($value)){
             $this->iterateRecursively($value);
         }
    }
}