【发布时间】:2014-02-23 08:14:42
【问题描述】:
我正在通过带有 ASP.NET MVC 网站的官方 C# 驱动程序使用 MongoDB。
我有以下 C# 模型:
public class Contact
{
public ObjectId Id { get; set; }
public string Name { get; set; }
public DateTime DateAdded { get; set; }
}
当从 MongoDB 中提取并通过 MVC 序列化为 JSON 字符串时,如下所示:
{
"_id" : ObjectId("52eaad4839b60812fca4bf28"),
"Name": "Joe Blow",
"DateAdded" : ISODate("2014-01-30T19:51:35.977Z")
}
当我尝试通过 JSON.parse() 将其从 JSON 字符串转换为浏览器上的 Javascript 对象时,我收到以下错误:
Uncaught SyntaxError: Unexpected token I
这是因为ISODate(...) 不是有效的 JSON
ObjectId() 也不是有效的 JSON,但我处理它的方式是在客户端上解析 JSON 字符串之前简单地执行 string.replace()。我考虑过为ISODate() 做同样的事情,但感觉有点太老套了。
有没有什么我可以在客户端不使用正则表达式的情况下做的?也许来自 MongoDB 驱动程序?
【问题讨论】:
-
您也有
ObjectId(...)的问题,而不仅仅是ISODate。这不是一个有效的 json。 -
我在解析之前从字符串中删除
ObjectId(),留下封装的 GUID。 -
那么对
ISODate做同样的事情,例如,Json.net 可以处理剩下的事情。 -
能否在解析前添加一个名为 ISODate 的全局函数?
标签: c# asp.net-mvc json mongodb knockout.js