我有一个带小数点的对象:
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也没有出于同样的原因?