相关疑难解决方法(0)

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

我通过官方C#驱动程序和ASP.NET MVC网站使用MongoDB.

我有以下C#模型:

public class Contact
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
    public DateTime DateAdded { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

从MongoDB中提取并通过MVC序列化为JSON字符串时,如下所示:

{
    "_id"  : ObjectId("52eaad4839b60812fca4bf28"),
    "Name": "Joe Blow",
    "DateAdded" : ISODate("2014-01-30T19:51:35.977Z")
}
Run Code Online (Sandbox Code Playgroud)

当我尝试通过JSON.parse()将其从JSON字符串转换为浏览器上的Javascript对象时,我收到以下错误:

Uncaught SyntaxError: Unexpected token I

这是因为ISODate(...)JSON无效

ObjectId()也是无效的JSON,但我正在处理的方式是string.replace()在客户端解析之前简单地对JSON字符串执行.我考虑做同样的事情,ISODate()但感觉有点太hacky.

如果不在客户端使用正则表达式,我能做些什么吗?也许来自MongoDB驱动程序的东西?

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

14
推荐指数
2
解决办法
7632
查看次数

MongoDB C#驱动程序和DateTime字段

我正在使用C#驱动程序将文档插入MongoDB集合,当我调试应用程序时,其中一个字段类型与DateTime我在"FrameTimeStamp"字段中看到服务器时间我将传递给Mongo,这是我的代码:

FrameDocument frameDoc = new FrameDocument();
frameDoc.Frame = imageBA;
frameDoc.EventCodeId = 1;
frameDoc.SesionId = 1;
frameDoc.FrameTimeStamp = DateTime.Now;
frameDoc.ServerUserId = (int)toMongoDt.Rows[0]["ServerUserId"];
frameDoc.TraderId = (int)toMongoDt.Rows[0]["TraderId"];
frameDoc.ActivePick = (int)toMongoDt.Rows[0]["ActivePick"];
frameDoc.TraderName = (string)toMongoDt.Rows[0]["TraderName"];
frameDoc.ServerUserName = (string)toMongoDt.Rows[0]["ServerUserName"];

var mongoCon = "mongodb://127.0.0.1";
MongoClient client = new MongoClient(mongoCon);
var db = client.GetDatabase("Video");

var frameCollection = db.GetCollection<FrameDocument>("Frame");
frameCollection.InsertOne(frameDoc);
Run Code Online (Sandbox Code Playgroud)

在shell中,当我读取数据时,我会看到以下格式: 2016-08-14T06:10:3​​3.295Z并且时间不是服务器时间,它的UTC,我如何强制mongo将DateTime写为我通过了,?

c# datetime-format mongodb

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×2

mongodb ×2

asp.net-mvc ×1

datetime-format ×1

json ×1

knockout.js ×1