MassTransit与NewtonSoft.Json

时间:2019-03-18 14:05:30

标签: c# .net serialization json.net masstransit

我有一个带小数点的对象:

public class MyObject
{  
   [JsonProperty(PropertyName = "some_amount")]
   public decimal Amount { get; set; }
}

当我调用MassTransit的IPublishEndpoint.Publish(myObject)的实现时,实际上进入队列的消息类似于以下内容:

{
   ...
   "message":{
      "Amount":"0.1"
   }
   ...
}

但是当我使用JsonConvert.SerializeObject(myObject)时,我得到以下信息:

{
   "Amount":0.1
}

忽略MassTransit包含的容器对象,您可以看到MyObject的十进制属性在通过MassTransit发送时用引号引起来,但在使用Newtonsoft.Json时却没有使用。

我希望MassTransit以数字而不是字符串来序列化不带引号的十进制属性,即当我直接用JsonConvert.SerializeObject序列化对象时,序列化的方式相同。实现此目标的最佳方法是什么?如果路线更简单,我不想重新发明轮子。

此外,是否发生这种情况,因为默认情况下MassTransit将小数序列化为字符串?如果是这样,这是为什么?为什么Newtonsoft也没有出于同样的原因?

0 个答案:

没有答案