MongoDB PHP:如何使用 JSON 提要获取 ObjectId? (它是空白的)

Posted

技术标签:

【中文标题】MongoDB PHP:如何使用 JSON 提要获取 ObjectId? (它是空白的)【英文标题】:MongoDB PHP: How do I get ObjectId with a JSON feed? (it's blank) 【发布时间】:2011-04-27 22:01:37 【问题描述】:

我正在通过 GridFS 存储文件并像这样保存 id:

$file_id = $gridfs->storeUpload('texture');
$item = array(
    'name'=>$_POST['name'],
    'description'=>$_POST['description'],
    'price'=>$_POST['price'],
    'categories'=>$category_array,
    'tags'=>$tag_array,
    'file'=>$file_id
 );
 $collection->insert($item);

并通过终端并执行 find() "file" 返回: ObjectId("4cbe9afe460890b774110000")

如果我这样做是为了创建一个 JSON 提要,以便我可以获取我的应用程序的信息“文件”是空白的......这是为什么?:

foreach($cursor as $item)
            $return[$i] = array(
                'name'=>$item['name'],
                'description'=>$item['description'],
                'file'=>$item['file']
            );
            $i++;
        
        echo json_encode($return);

对我来说奇怪的是,为什么我可以这样做:

foreach($cursor as $item)
echo $item['file'];

然后把它拿回来?

哦,这是提要返回的内容:

["name":"Tea Stained Paper 1","description":"Grungy paper texture stained with tea and coffee.","file":,"name":"Worn Metal 1","description":"A grooved, worn old metal texture","file":]

【问题讨论】:

【参考方案1】:

不确定,但也许

echo json_encode($return, JSON_FORCE_OBJECT);

是你需要做的。

也可能是,您需要将$item['file'] 转换为utf8

utf8_encode($item['file']);

在将其分配给$return 数组之前。

【讨论】:

谢谢!第一件事,虽然不是答案是真棒。我不知道那存在。我现在用那个。而且,UTF8 让它工作了!【参考方案2】:

MongoId 将它们的值隐藏在一个不可见的字段中。它没有可见字段,因此没有任何东西可以转换为 JSON,因此 。如果您想让 json_encode 做“正确”的事情,请投票给http://jira.mongodb.org/browse/php-154。

回显 MongoId 会将其转换为字符串,这就是它的行为不同的原因。

【讨论】:

那么,我该怎么做呢?我需要回应它吗? 没关系!但我确实希望无需转换为 utf8 就能成功!

以上是关于MongoDB PHP:如何使用 JSON 提要获取 ObjectId? (它是空白的)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Fetch API 获取 json 格式的闪烁提要

如何向用户显示 json feed?

在 PHP 中将 GMT 从 JSON 提要转换为当地时间

如何将 json 结果带入 PHP

如何在 PHP 中打印一个 MongoDB 集合?

将 JSON 提要与 Backbone JS 集成