JSON.NET は、GUID をネイティブ BSON UUID としてシリアル化することを望まないようで、代わりに GUID を文字列として出力しています。
私は両方から BSON を生成することをテストしましたJObject
(シリアライゼーション前の確認JValue.Type == JTokenType.Guid
)、および匿名型 ( new { myUuid = new Guid() }
) どちらの場合もうまくいきませんでした。
JSON.NET で GUID をネイティブ BSON UUID (16 バイトのバイナリ値、サブタイプ = 0x04) としてシリアル化するにはどうすればよいですか?
サンプルコード:
var source = new
{
myInteger = 123L,
myFloat = 10.0f,
myString = "hello",
myUuid = Guid.NewGuid(),
myBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7 },
myDatetime = DateTime.UtcNow,
};
MemoryStream buffer = new MemoryStream();
BsonWriter writer = new BsonWriter(buffer);
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(writer, source);
byte[] myBson = buffer.ToArray();