Webapi中使用Newtonsoft.Json序列化数据

起笔:

应项目需要,确定好前端和后端项目之统一使用“json”进行数据传输;此时在后端遇到一个问题,因为后端使用的是WebAPI技术,数据返回有两种方式;XML和Json,默认使用的方式是xml,但是不同的浏览器也会使用json进行传输,所以这里不是一个确定的值,那么我们要确定所有浏览器都是通过json返回数据,详细配置如下:

//WebApiConfig配置文件
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());

过程:

参照网上的一般做法,虽然使用json方式返回数据,但是会遇到一些小瑕疵;此时如果将数据传输到前端的话,不符合前端接收数据一些要求;

一、遗留瑕疵

1:DateTime(日期后存在一个‘T’);2:日期的格式化(日期并不能格式化);3:循环引用;4:属性名开头小写(类中属性都是大写)等等。

二、可替代的类库

Newtonsoft.json闪亮登场,开源的世界级的Json操作类库,不光可以解决以上问题,同时性能方面也是json类库不可匹敌的,在几个序列化类库也是具有明显优势;性能测试-序列化效率比拼——谁是最后的赢家Newtonsoft.Json

三、使用方式

            #region Newtonsoft.json替换为Json
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings
            {
                //忽略循环引用,如果设置为Error,则遇到循环引用的时候报错
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                Formatting = Newtonsoft.Json.Formatting.Indented,
                //小驼峰命名法
                ContractResolver = new CamelCasePropertyNamesContractResolver(),
                //格式化日期时间
                DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
                DateFormatString = "yyyy-MM-dd HH:mm:ss",
                //空值处理
                //NullValueHandling = NullValueHandling.Ignore

            };
            #endregion

四、swagger测试

结尾:

大家是否可以看到,通过增加上面配置项后,我们都不用设定json作为默认的返回类型,通用型问题的解决方案;

当然文章内容仅仅展示Newtonsoft.json的冰山一角,有兴趣的伙伴们可以再继续深入研究-Newtonsoft.Json高级用法

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值