c# - 尝试解析序列化 JSON 字符串时处理 MongoDB 的 ISODate()

标签 c# asp.net-mvc json mongodb knockout.js

我正在通过带有 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 驱动程序?

最佳答案

我认为您需要进一步调整 JSON 序列化程序。试试这个:

var jsonWriterSettings = new JsonWriterSettings { OutputMode = JsonOutputMode.Strict };
Console.WriteLine(document.ToJson(jsonWriterSettings));

关于c# - 尝试解析序列化 JSON 字符串时处理 MongoDB 的 ISODate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21466446/

相关文章:

json - google.protobuf.json_format.MessageToJson 更改字段名称。如何避免?

c# - 确定数据库是否是 Azure 数据库

c# - Windows 8 与 Windows Server 2012 上可构建的 C# 应用程序的区别?

c# - ASP.NET MVC 2 - POST 后 ViewData 为空

asp.net-mvc - 无法在我的自定义 html 帮助器中检索验证属性(从我的模型)

javascript - 如何将数组列表转换为json对象列表

C#:如何正确处理 float

c# - Visual Studio 2015 Intellisense 中没有 Bower 包

c# - 如何在 Umbraco 6 中实现自定义 Controller

android - Json解析错误?