GVKun编程网logo

webapi 控制json的字段(key)显示顺序(webapi接收json格式)

9

针对webapi控制json的字段(key)显示顺序和webapi接收json格式这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.NETWebApijsonapi.org支持、.NetCo

针对webapi 控制json的字段(key)显示顺序webapi接收json格式这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.NET WebApi jsonapi.org支持、.NetCore自定义WebAPI返回Json的格式大小写的三种方式、apijson-column 1.2.2 发布,腾讯 APIJSON 的字段插件、apijson-column 1.2.7 发布,腾讯 APIJSON 的字段插件•反选字段&名称映射等相关知识,希望可以帮助到你。

本文目录一览:

webapi 控制json的字段(key)显示顺序(webapi接收json格式)

webapi 控制json的字段(key)显示顺序(webapi接收json格式)

使用两个c#的特性:

加在类上的:[DataContract]

加在字段上的:[DataMember(Name = "ResultCode",EmitDefaultValue = true,IsRequired = true, Order = 1)]

    [DataContract]
    public class ResponseMessage
    {
        /// <summary>
        /// 信息类型
        /// </summary>
        [DataMember(Name = "ResultCode",EmitDefaultValue = true,IsRequired = true, Order = 1)]
        public int ResultCode { get; set; }
    }

 这个order就是控制顺序的。C#就是辣么强大。

 

.NET WebApi jsonapi.org支持

.NET WebApi jsonapi.org支持

有谁知道是否有媒体格式化程序支持jsonapi.org规范(application / vnd.api json).

如果没有人开始(或开始)一个项目来实现这个?

解决方法

为了记录,截至今天,答案似乎是否定的.我能找到的最好的是这个家伙: http://www.emadibrahim.com/2014/04/09/emberjs-and-asp-net-web-api-and-json-serialization/并且只解决了问题的一小部分.

我已经尝试了一段时间……不幸的是,我尝试制作一些非常聪明的东西,并且几乎不需要工作就可以自动处理来自Entity Framework的数据模型.我正在考虑发布它…然后我发现他们在EF 6中改变了一堆东西(所有模型都应该是POCO,上下文现在是DbContext而不是ObjectContext)我就是可能必须从本质上重新开始…这就是为什么我再次开始寻找其他人是否正在做这件事并找到你的问题.

如果你还在寻找这个,请告诉我,我会及时通知你.

UPDATE

我刚刚发布了一个codeplex项目,旨在提供我上面所描述的内容.它被称为JSONAPI.NET,虽然它很早,它已经做了很多.文档很少,我还没有NuGet包……但是看看每个人,看看它是否对你有用.鼓励反馈!您可以通过链接中的项目页面与我联系.

.NetCore自定义WebAPI返回Json的格式大小写的三种方式

.NetCore自定义WebAPI返回Json的格式大小写的三种方式

.NetCore的Controller/WebAPI可以帮我们将返回结果自动转换为Json格式给前台,而且可以自由设定格式(大写、小写、首字母大写等),我总结了三种方法,对应三种灵活度,供大家参考

(一)通过Startup.cs设置项目级别的格式

  在项目Startup.cs中增加如下配置:

services.AddMvc().AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); });

 

 

       默认为保持原样,也可设定为CamelCasePropertyNamesContractResolver(),即首字母小写的驼峰格式。

       本身是没有将属性全部小写的方法,我这里提供一个参考,大家可以自定义想要的格式:

 

public class LowercaseContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
    {
        protected override string ResolvePropertyName(string propertyName)
        {
            return propertyName.ToLower();
        }
    }

 

(二)设置Controller/WebAPI级别的统一格式转换,这里用到了ActionFilterAttribute,扩展出一个CustomActionJsonFormatAttribute标签

public class CustomActionJsonFormatAttribute : ActionFilterAttribute
    {
        private Type _ContractResolver { get; set; }
        public CustomActionJsonFormatAttribute(Type ContractResolver)
        {
            _ContractResolver = ContractResolver;
        }
        public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
        {var jsonResult = (JsonResult)actionExecutedContext.Result;
                jsonResult.SerializerSettings = new JsonSerializerSettings
                {
                    ContractResolver = Activator.CreateInstance(_ContractResolver) as IContractResolver
                };

                actionExecutedContext.Result = jsonResult;
        }
    }

使用时在Controller/WebAPI中添加如下代码即可,即可以在class层面添加,也可以在Action上添加:

[CustomActionJsonFormat(typeof(LowercaseContractResolver))]

public IActionResult EntityInfo([Required]string entityid) { ... }

 

(三)在代码返回的时候设置JsonResult,这个是最灵活但也最麻烦的方式:

return new JsonResult(new Entity
                    {
                        EntityId = entityid,
                        Name = entityType.Name,
                        OrganizationId = Permission.getCurrentUserOrg().ORG_GID
                    }, new JsonSerializerSettings
                    {
                        ContractResolver = new LowercaseContractResolver()
                    });

 

apijson-column 1.2.2 发布,腾讯 APIJSON 的字段插件

apijson-column 1.2.2 发布,腾讯 APIJSON 的字段插件

image

image

apijson-column 1.0.0-1.2.2 更新内容

  • 支持 字段名映射 和 !key 反选字段;

  • 完善文档;

  •  

    升级自身, APIJSON 版本分别为 1.2.2, 5.1.0;

具体见 Release 发布版本。

 

apijson-column 

腾讯 APIJSON 4.6.6+ 的字段插件,支持 !key 反选字段 和 字段名映射,可通过 Maven, Gradle 等远程依赖。

 

1.反选字段

"@column": "!columnKey" // 返回排除 columnKey 后的全部其它字段

{
    "User": {  // id,sex,name,tag,head,contactIdList,pictureList,date
        "id": 82001,
        "@column": "!contactIdList"  // -> id,sex,name,tag,head,pictureList,date
    }
}

image

2.字段名映射

"@column": "showKey" // 隐藏了数据库的对应真实字段名

{
    "User": {  // id,sex,name,tag,head,contactIdList,pictureList,date
        "id": 82001,
        "@column": "gender"  // -> sex 
    }
}

image

 

https://gitee.com/APIJSON/apijson-column

创作不易,右上角点 ⭐Star 支持下吧 ^_^

 

apijson-column 1.2.7 发布,腾讯 APIJSON 的字段插件•反选字段&名称映射

apijson-column 1.2.7 发布,腾讯 APIJSON 的字段插件•反选字段&名称映射

image

image

apijson-column 1.2.4-1.2.7 更新内容

  • 升级 APIJSON, fastjson 版本分别为 5.3.0, 1.2.83

具体见 Release 发布版本。

 

apijson-column 

腾讯 APIJSON 4.6.6+ 的字段插件,支持 !key 反选字段 和 字段名映射,可通过 Maven, Gradle 等远程依赖。

 

1.反选字段

"@column": "!columnKey" // 返回排除 columnKey 后的全部其它字段

{
    "User": {  // id,sex,name,tag,head,contactIdList,pictureList,date
        "id": 82001,
        "@column": "!contactIdList"  // -> id,sex,name,tag,head,pictureList,date
    }
}

image

2.字段名映射

"@column": "showKey" // 隐藏了数据库的对应真实字段名

{
    "User": {  // id,sex,name,tag,head,contactIdList,pictureList,date
        "id": 82001,
        "@column": "gender"  // -> sex 
    }
}

image

 

https://gitee.com/APIJSON/apijson-column

创作不易,右上角点 ⭐Star 支持下吧 ^_^

 

关于webapi 控制json的字段(key)显示顺序webapi接收json格式的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.NET WebApi jsonapi.org支持、.NetCore自定义WebAPI返回Json的格式大小写的三种方式、apijson-column 1.2.2 发布,腾讯 APIJSON 的字段插件、apijson-column 1.2.7 发布,腾讯 APIJSON 的字段插件•反选字段&名称映射的相关知识,请在本站寻找。

本文标签: