У меня есть объект с десятичной дробью в:
public class MyObject
{
[JsonProperty(PropertyName = "some_amount")]
public decimal Amount { get; set; }
}
Когда я вызываю мою реализацию MassTransit's IPublishEndpoint.Publish(myObject)
, сообщение, которое фактически отправляется в очередь, выглядит примерно так:
{
...
"message":{
"Amount":"0.1"
}
...
}
Тем не менее, когда я использую JsonConvert.SerializeObject(myObject)
, я получаю следующее:
{
"Amount":0.1
}
Игнорируя объект контейнера, который включен в MassTransit, вы можете видеть, что десятичное свойство MyObject находится в кавычках при отправке через MassTransit, но без них при использовании Newtonsoft.Json.
Я бы хотел, чтобы MassTransit сериализовал мое десятичное свойство без кавычек, как число, а не как строку - то есть так же, как он сериализуется, когда я сериализую объект непосредственно с JsonConvert.SerializeObject
. Каков наилучший способ достичь этого? Я не хочу изобретать велосипед, если есть более упрощенный маршрут.
Кроме того, происходит ли это потому, что по умолчанию MassTransit сериализует десятичные дроби в строки? Если да, то почему и почему Newtonsoft не последовал по той же причине?