JSON.NET, похоже, не хочет сериализовать GUID как собственные UUID BSON, а вместо этого выводит GUID в виде строк.
Я протестировал создание BSON как из JObject
(проверив перед сериализацией, что JValue.Type == JTokenType.Guid
), так и из анонимного типа (new { myUuid = new Guid() }
), но безуспешно в любом случае.
Как заставить JSON.NET сериализовать идентификаторы GUID как собственные идентификаторы UUID BSON (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();