MassTransit по-разному сериализует десятичные дроби с NewtonSoft.Json - PullRequest
0 голосов
/ 18 марта 2019

У меня есть объект с десятичной дробью в:

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 не последовал по той же причине?

...