zoukankan      html  css  js  c++  java
  • .Net Web Api返回Json数据中原对象变量名大小写问题

    这两天在工作中使用SignalR的WebSocket做数据实时传递的功能开发,在后端主动向前端广播数据以Json传递时,前端获取的Json中对应类的变量名首字母默认传递的是大写。而前端一直获取到的后台返回给Json中字段均为首字母小写的驼峰命名法。原因出在什么地方了呢?

    调研了一番,发现我们一般Web Api 或者Web MVC中的Controler内的那些JsonResult、ActionResult、IHttpActionResult等返回给前端的数据,都是经过语法限定为采用“驼峰”命名法首字母小写的方式传递的。这里简述下三种方式:

    1)在配置路由的WebApiConfig中添加如下属性:

    // 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式. 

    config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

    // 对 JSON 数据使用混合大小写。跟属性名同样的大小输出 <Ps, 可选>

    //config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

    2)在Global.asax文件的Application_Start或分装好的WebModeul中添加如下属性:

    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Converters属性来增加自定义json转换器.

    不过补充下,到目前为止GlobalConfiguration类只能控制WebApi Controller中Action返回值的序列化机制,它不能控制WebApi Controller中Action参数的反序列化机制,更不能控制MVC Controller的Action序列化机制。

    3)最后就是我们许多网友采用的附加JsonProperty属性来加以限制,如下图所示引用Newtonsoft.Json,给每个属性限制下就OK了。不过,如果遇到继承自实体的DTO,则可以选用JsonExtention类中的ToJsonString(true,true)方式转换对象。

    using Newtonsoft.Json;
    
    /// <summary>
    ///商品类。    
    /// </summary>
    public class Product
    {
       /// <summary>
       /// 商品Id
       /// </summary>
      [JsonProperty("productId")]
      public string ProductId { set; get; }
       /// <summary>
       /// 商品名称
      /// </summary>
      [JsonProperty("productName")]
      public string ProductName { set; get; }
    }

    以上就是最近填坑的历程。


    墨匠
  • 相关阅读:
    [Web 前端] CSS 盒子模型,绝对定位和相对定位
    [Android Pro] 跨平台反编译工具 jadx (ubuntu亲测 可用)
    [Web 前端] Jquery 复制元素,并修改属性, 追加到另一个元素后面
    [Web 前端 ] Jquery attr()方法 获取或修改 对象的属性值
    [Web 前端] Jquery实现可直接编辑的表格
    [Web 前端] td长度固定,内容过长,超过部分用省略号代替
    [Network] okhttp3与旧版本okhttp的区别分析
    [Android Pro] AndroidStudio IDE界面插件开发(进阶篇之Editor)
    graph embedding 使用方法
    win10 'make' 不是内部或外部命令
  • 原文地址:https://www.cnblogs.com/Jashinck/p/9005740.html
Copyright © 2011-2022 走看看