【发布时间】:2015-09-16 03:20:14
【问题描述】:
{ _id: 55cacecf5bccb3b660b4e0af,
created_at: Wed Aug 12 2015 12:42:55 GMT+0800 (SGT),
updated_at: Wed Aug 12 2015 12:42:55 GMT+0800 (SGT),
id: '0000',
keyname: 'Test Key 3',
postalcode: '652811',
starttime: Fri Jul 31 2015 11:33:22 GMT+0800 (SGT),
endtime: Fri Jul 31 2015 11:33:22 GMT+0800 (SGT),
__v: 0 }
当我尝试使用 json.id 获取 id 时,它给了我一个未定义的值。
我尝试使用 JSON.parse 解析为 JSON,但它给了我这个错误。这个 JSON 来自 MongoDB
undefined:1
{ _id: 55cacecf5bccb3b660b4e0af,
^
SyntaxError: Unexpected token _
【问题讨论】:
-
那不是 JSON。 JSON 始终是一个字符串,并且需要在键和字符串值(如
55cacecf5bccb3b660b4e0af和Wed Aug 12 2015 12:42:55 GMT+0800 (SGT))周围加上引号。此外,您没有名为id的属性,但您有一个名为_id的属性。 -
有什么方法可以将其转换为 JSON 吗?我的属性
id是 0000 -
目前还不清楚“这个”是什么。它是一个对象,你打印出来并复制出来的东西吗?然后“也许”——JSON 不支持日期,因此它们应该呈现为字符串或时间戳。它是你以某种方式拥有的字符串吗?那么这将是很多工作,您应该尝试获取底层对象。
-
您显然正在使用猫鼬(标签中未提及)从 MongoDB 返回一个对象。它不是“JSON”,而只是一个普通的 JavaScript 对象,或者更具体地说是一个“猫鼬文档”。作为从 mongoose 返回的东西,应该有一个“id”访问器,它已经作为
_id字段的别名存在,这是强制性的,除非您明确调用.toObject()以返回一个普通对象或使用“原始”。因此,您只需像访问任何其他 JavaScript 对象一样访问属性。 MongoDB 说的不是 JSON,而是 BSON,并且总是由驱动程序编组为本地语言形式。
标签: javascript json node.js mongodb