asp.net-mvc – JsonSerializer – 使用’N2’格式序列化小数位

我正在使用Newtonsoft.Json.JsonSerializer序列化小数.

如何将其设置为序列化只有1位小数的十进制数,以便在结尾处使用0.

即3.5序列化为“3.50”?

解决方法

您必须编写自己的自定义JsonConverter并使用它来拦截十进制类型,以便您可以更改它的序列化方式.这是一个例子:
public class DecimalFormatConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return (objectType == typeof(decimal));
    }

    public override void WriteJson(JsonWriter writer,object value,JsonSerializer serializer)
    {
        writer.WriteValue(string.Format("{0:N2}",value));
    }

    public override bool CanRead
    {
        get { return false; }
    }

    public override object ReadJson(JsonReader reader,Type objectType,object existingValue,JsonSerializer serializer)
    {
        throw new NotImplementedException();    
    }
}

要使用它,只需将此自定义转换器的新实例传递给SerializeObject方法

var json = JsonConvert.SerializeObject(yourObject,new DecimalFormatConverter());

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....