Cha*_*evy 14 c# asp.net-mvc json mongodb knockout.js
我通过官方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驱动程序的东西?
Nei*_*unn 11
我认为你需要更多地调整你的JSON序列化器.试试这个:
var jsonWriterSettings = new JsonWriterSettings { OutputMode = JsonOutputMode.Strict };
Console.WriteLine(document.ToJson(jsonWriterSettings));
Run Code Online (Sandbox Code Playgroud)
您应该使用JsonConvert
将日期正确转换为 Json。接受的答案会产生一个日期对象,例如:{ $date: 190012312211 }
正如@Rick Strahl 所提到的。这应该有效:
object val = BsonTypeMapper.MapToDotNetValue(bsonDocument);
string jsonString = JsonConvert.SerializeObject(val);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7632 次 |
最近记录: |