c# – 如何使用DataAnnotation将对象序列化为JSON,以使用ServiceStack请求格式化double属性

使用ServiceStack我需要格式化这个请求,以便CodValue属性保持这种格式#.#

[DataContract(Name = "request1")]
public class Request1
{
   [DataMember(Name = "codValue")]
   public double CodValue { get; set; }
}

var request1 = new Request1 { CodValue = 0.0 }
_serviceClientBase.Post(request1);

但是,当我发送请求时,服务器端收到CodValue = 0
但是由于服务器端是Java,它会返回一个错误,说它是Java.Lang.Long而不是Double.

如何强制ServiceStack将JSON请求保持为0.0的格式?

解决方法:

您可以指定一个JsConfig< T> .RawSerializerFn来追加任何缺失的.0后缀,例如:

JsConfig<double>.IncludeDefaultValue = true;
JsConfig<double>.RawSerializeFn = d =>
{
    var str = d.ToString(CultureInfo.InvariantCulture);
    return str.IndexOf('.') >= 0 ? str : str + ".0";
};

要打印所需的结果:

var dto = new Request1 { CodValue = 0.0 };

dto.ToJson().Print(); //= {"codValue":0.0}
上一篇:linux中巧用ctrl-z后台运行程序


下一篇:c# – 在JSON反序列化期间将int转换为bool