6

asJsonWriterSettingsを出力するように強制することは可能ですかObjectID

{ "id" : "522100a417b86c8254fd4a06" }

それ以外の

{ "_id" : { "$oid" : "522100a417b86c8254fd4a06" }

独自のパーサーを作成できることはわかっていますが、コードのメンテナンスのために、Mongo JsonWriterSettings.

これが可能な場合、どのクラス/インターフェースをオーバーライドする必要がありますか?

4

2 に答える 2

6

MongoDB C# 属性または Mapper を使用しても問題ない場合は、次のようにすることができます。

public class Order {
    [BsonId]
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; set; }
}

そうすれば、通常は型を文字列として参照できますが (シリアル化を含む)、MongoDB がシリアル化するときなどは、内部的に ObjectId として扱われます。ここでは、クラス マップ手法を使用しています。

BsonClassMap.RegisterClassMap<Order>(cm => {
    cm.AutoMap();
    cm.SetIdMember(cm.GetMemberMap(c => c.Id);
    cm.GetMemberMap(c => c.Id)
       .SetRepresentation(BsonType.ObjectId);
});
于 2013-09-03T17:50:45.020 に答える
0

代わりに JSON.NET を使用すると、値を文字列に、またはその逆にJsonConverter変換する を簡単に追加できます。ObjectId

ASP.NET WebAPI では、これを既定のコンバーター セットに追加できます。Formatters.JsonFormatter.SerializerSettings.Converters

于 2013-09-03T17:05:08.553 に答える