如何使用.net格式化对象ID和日期以正确显示json序列化的mongodb数据?
如何使用.net格式化对象ID和日期以在json序列化输出中正确显示?如何使用.net格式化对象ID和日期以正确显示json序列化的mongodb数据?
return Json(result, JsonRequestBehavior.AllowGet);
,这里是输出,我得到
{
"_id": {
o "Timestamp": 1321487136,
o "Machine": 5156,
o "Pid": -4604,
o "Increment": 78,
o "CreationTime": "/Date(1321487136000)/"
},
"start": "/Date(1321487094000)/",
"end": "/Date(1638039600000)/",
}
我想的JSON看起来像这样
{
"_id":"4e483da1e517801b09000004",
"end":"2012-12-30T05:00:00.000Z",
"start":"2011-08-14T17:26:57.000Z"
}
通过以下的建议,阅读,得到了它与工作以下
public class MongoSimpleIdConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(MongoDB.Bson.ObjectId);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return new MongoDB.Bson.ObjectId((string)existingValue);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((MongoDB.Bson.ObjectId)value).ToString());
}
}
[HttpGet]
public ContentResult Index()
{
var result = JsonConvert.SerializeObject(svc.GetTasks(), new MongoSimpleIdConverter(), new IsoDateTimeConverter());
return new ContentResult { Content = result, ContentType = "application/json" };
}
呵呵,有趣的是,我确信它会变得轻而易举,但似乎并没有一个简单的答案,如“编写一个转换器并将其插入一个属性”。
我会建议使用第三方像Json.net(它支持自定义转换器),并远离内置的方法。
我曾经写过这样的代码来处理非官方蒙戈驱动程序ID序列化同样的问题 -
public class OidConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(MongoDB.Oid);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return new MongoDB.Oid((string)existingValue);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((MongoDB.Oid)value).ToString());
}
}
什么是th e结果变量的数据类型?
将JSON支持构建到C#驱动程序中可能会有更好的结果。试试这个:
var json = result.ToJson();
这不会看起来完全像你说的你想要的,但它应该更接近。
的数据类型是MongoDB的对象ID和不知道为什么日期出来找这样的.. 。也许我可以覆盖特定的这两种特定数据类型的json序列化程序? – MonkeyBonkey
实际上看起来更好,现在我只需要让它将内容类型设置为应用程序/ json,当我有控制器返回jsonresult – MonkeyBonkey
仍然是一个问题,因为该序列化程序返回此:“结束”:ISODate(“2021 -11-27T19:00:00Z“)而不是仅仅是日期 – MonkeyBonkey
的建议的字符串,让它工作 – MonkeyBonkey