asp.net core 如何统一json序列化格式

oldconfig.AllFields =  Newtonsoft.Json.JsonConvert.SerializeObject(sqlParameters.AllFields);

在start.cs文件中


            JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
            {

                JsonSerializerSettings jsonsetting = new JsonSerializerSettings()
                {
                    Formatting = Formatting.None,
                    ContractResolver = new DefaultContractResolver()
                };
                //日期类型默认格式化处理
                jsonsetting.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
                jsonsetting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; 
                jsonsetting.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
                jsonsetting.Converters.Add(new StringEnumConverter());
                jsonsetting.ContractResolver = new DefaultContractResolver();
                //空值处理
                jsonsetting.NullValueHandling = NullValueHandling.Include;

                return jsonsetting;
            });


上面用来初始化, 后台代码中Newtonsoft.Json.JsonConvert.SerializeObject() 方法的默认参数
上面用来初始化, 后台代码中Newtonsoft.Json.JsonConvert.SerializeObject() 方法的默认参数
上面用来初始化, 后台代码中Newtonsoft.Json.JsonConvert.SerializeObject() 方法的默认参数


下面用来初始化, Controller返回对象的json格式化参数。
下面用来初始化, Controller返回对象的json格式化参数。
下面用来初始化, Controller返回对象的json格式化参数。
            // services.MvcOptions.EnableEndpointRouting = false
            services .AddMvc(options => options.EnableEndpointRouting = false)

                    //.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

                    //解决JObject接收参数的问题 start
                    //.AddNewtonsoftJson()
                    .AddNewtonsoftJson(options =>
                    {
                        options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                        //长整型序列化为字符串                    
                        //options.SerializerSettings.Converters.Add(new LongToStringConverter());
                        //枚举转字符串,而不是数值
                        options.SerializerSettings.Converters.Add(new StringEnumConverter());

                        //时间格式化                    
                        //options.SerializerSettings.Converters.Add(new DateTimeFormatConverter("yyyy-MM-dd HH:mm:ss"));

                        options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";

                        options.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });

                        //空值处理,序列化和反序列化时, 空值也要转换输出。
                        options.SerializerSettings.NullValueHandling = NullValueHandling.Include;

                    })
                    .AddJsonOptions(options => {
                        options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); 
                    });
                //解决JObject接收参数的问题
            ;

为什么要写两次?

第一次在 JsonConvert.DefaultSettings 中设置的初始值是给自己的代码调用Newtonsoft.Json.JsonConvert.SerializeObject() 方法的默认参数

AddNewtonsoftJson() 中用来初始化, Controller返回对象的json格式化参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值