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? (它是空白的)的主要内容,如果未能解决你的问题,请参考以下文章