シリアル化されたJSON文字列を解析しようとするときにMongoDBのISODate()を処理する質問する

シリアル化されたJSON文字列を解析しようとするときにMongoDBのISODate()を処理する質問する

私は、ASP.NET MVC Web サイトで公式 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 ではありませんが、私がこれを処理する方法は、string.replace()クライアントで解析する前に JSON 文字列に対して を実行することです。 についても同じことをすることを検討しましたISODate()が、少しハッキーすぎる気がします。

クライアント側で正規表現に頼らずに何かできることはありますか? MongoDB ドライバーから何かできるでしょうか?

ベストアンサー1

JSON シリアライザーをもう少し調整する必要があると思います。これを試してください:

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

おすすめ記事