ASP.Net Core基于ABP架构配置To Json序列化

一、 前言

我们采用ABP架构用MVC Controller或Web API返回给前端结果ToJson序列化后得到的属性命名都是采用js的驼峰格式,即首字母小写,后面单词首字母大写的格式(如:后台属性名为OrderName,返回的前端js为orderName)。但在实际项目开发中由于某种原因(比如给老系统提供接口或现有系统集成等)需要采用给后台属性名一致或自己特定的格式,下面就介绍一下基于ABP架构ToJson如何修改默认配置和自定义配置。

二、 修改ToJson序列化默认配置

在Startup文件进行默认配置修改,代码如下:

public class Startup
{
        private readonly IConfigurationRoot _appConfiguration;

        public Startup(IHostingEnvironment env)
        {
            _appConfiguration = env.GetAppConfiguration();
        }

        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            // MVC
            services.AddMvc()
        .AddJsonOptions(options =>
            {
                //配置tojson格式配置 DefaultContractResolver 为和后台属性名保持一致(即:后台属性名为OrderName,前端js获得属性名也为OrderName)
                options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                //修改为CamelCasePropertyNamesContractResolver,为js的驼峰格式,即abp默认格式(即:后台属性名为OrderName,前端js获得属性名为orderName)
                //options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            });
      }
}

三、ToJson序列化自定义配置

如果需要自定义ToJson序列化格式,需要先写一个子类继承DefaultContractResolver,重写ResolvePropertyName方法,代码如下:

public class MyPropertyNamesContractResolver : DefaultContractResolver
{
        protected override string ResolvePropertyName(string propertyName)
        {
            //属性名全部返回小写
            return propertyName .ToLower();
        }
}

再参考第二点在Startup文件将配置替换为MyPropertyNamesContractResolver

services.AddMvc()
.AddJsonOptions(options =>
{
     //配置tojson格式替换为自定义格式 MyPropertyNamesContractResolver (即:后台属性名为OrderName,前端js获得属性名为ordername)
     options.SerializerSettings.ContractResolver = new MyPropertyNamesContractResolver();
     options.SerializerSettings.DateFormatString = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"; //返回给前台的JSON数据中时间格式去掉T
});

到此这篇关于ASP.Net Core基于ABP架构配置To Json序列化的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • .NET中JSON的序列化和反序列化的几种方式

    一.什么是JSON JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立 于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升 网络传输效率. 是JavaScript用来处理数据的一种格式,大部分是用来处理JavaScript和web服务器端之间的数据

  • C# Newtonsoft.Json 解析多嵌套json 进行反序列化的实例

    我就废话不多说啦,大家还是直接看代码吧~ [ { "orderNo": "3213123123123", "time": "2016-09-09 12:23:33", "orderStatus": "1", "freeShipping": true, "fullCut": 20, "originalCost": 340, &qu

  • C#对JSON与对象的序列化与反序列化

    一.利用Web服务中的JavaScriptSerializer 类 System.Web.Script.Serialization空间,位于System.Web.extensions.dll中. JavaScriptSerializer jss = new JavaScriptSerializer(); Console.WriteLine(jss.MaxJsonLength); //默认接受最大的长度是 2097152 这个是接受JSON字符串的最大长度,超长会有什么后果呢?试下 Person

  • C#对Json进行序列化和反序列化

    一.Json简介 Json(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JS的一个子集. Json采用完全独立于语言的文本格式.这使得Json成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. Json简单来说就是JS中的对象和数组,所以Json也存在两种结构:对象.数组. Json对象:Json对象定义在花括号“{}”内,以Key:value键值对的形式存放数据,多个数据使用分号“:”分割. 二.序列化 Object obj =

  • c# 使用Json.NET实现json序列化

    序列化(Serialize)是将对象转换成字节流,并将其用于存储或传输的过程,主要用途是保存对象的状态,以便在需要时重新创建该对象:反序列化(Deserialize)则是将上面的字节流转换为相应对象的过程:在C#中的使用JSON序列化及反序列化时,推荐使用Json.NET--NET的流行高性能JSON框架,当然也可以使用.NET自带的 System.Text.Json(.NET5).DataContractJsonSerializer.JavaScriptSerializer(不推荐). 下面是

  • C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

    引言:最近在工作中遇到与某些API对接的post的数据需要将对象的字段首字母小写. 解决办法有两种: 第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性) public class UserInfo { [JsonProperty("id")] public int Id{ set; get; } [JsonProperty("userName")] public string UserName{ set; get

  • C#使用Json.Net对JSON与对象的序列化与反序列化

    目录 一.使用Json.Net 1.把DataTable转换成json格式,使用最新Json.Net DLL ,已经内置转换器. 2.对Json.Net序列化和反序列化的控制 二.空值的处理 三.默认值的处理 四.忽略某些属性 五.支持非公共成员 六.日期处理 1.使用IsoDateTimeConverter 和 JavaScriptDateTimeConverter标准格式 1.如果你要序列化的日期格式是统一的,可以考虑如下方式 2.如果想要不同的日期类型成员序列化后,以不同的形式显示. 2.

  • C#中Json反序列化的实现方法

    前言 Json反序列化有两种方式[本人],一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单. 使用了Newtonsoft.Json,可以自行在nuget中导入 Json源数据: var data = "{'jingdong_ldop_receive_trace_get_responce':{'code':'0','querytrace_result':{'data':[{'opeTitle':'快递签收','opeRemark':'货物已交付京东物流','

  • ASP.Net Core基于ABP架构配置To Json序列化

    一. 前言 我们采用ABP架构用MVC Controller或Web API返回给前端结果ToJson序列化后得到的属性命名都是采用js的驼峰格式,即首字母小写,后面单词首字母大写的格式(如:后台属性名为OrderName,返回的前端js为orderName).但在实际项目开发中由于某种原因(比如给老系统提供接口或现有系统集成等)需要采用给后台属性名一致或自己特定的格式,下面就介绍一下基于ABP架构ToJson如何修改默认配置和自定义配置. 二. 修改ToJson序列化默认配置 在Startup

  • Asp.Net Core基于JWT认证的数据接口网关实例代码

    前言 近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对前后端分离的数据服务支持,于是想到我一直做.Net开发,问我是否对.Net Core有所了解?能不能做个简单Demo出来看看?我说,分道扬镳之后我不是调用别人的接口就是提供接口给别人调用,于是便有了以下示例代码. 示例要求能演示获取Token及如何使用该Token访问数据资源,在Demo中实现

  • ASP.NET Core基于现有数据库创建EF模型

    1.简介 Entity Framework Core可通过数据库提供给应用程序的插件访问许多不同的数据库.我们可以通过使用Entity Framework Core构建执行基本数据访问的ASP.NET Core MVC应用程序,对现有数据库进行反向工程以便创建Entity Framework模型. 2.创建数据库 我们可以通过Visual Studio创建一个数据库再进行演示,步骤如下:●打开Visual Studio开发工具●“工具”>“连接到数据库”●选择“Microsoft SQL Ser

  • asp.net core webapi 服务端配置跨域的实例

    在前后端分离开发中服务端仅仅只为前端提供api接口,并且前后端往往单独部署,此时就会出现浏览器跨域问题.asp.net core提供了简单优雅的解决方案. 在startup文件的Configure添加如下代码(替换"http://localhost:8080"为你的前端部署地址,此处测试的前端地址为本地的8080端口) 注:asp.net core2.0以下需安装nuget包:Microsoft.AspNetCore.Cors app.UseCors(builder => { b

  • ASP.NET Core开发环境安装配置

    ASP.NET Core环境设置 1.如何设置用于.NetCore应用程序开发的开发机器 2.安装SDK和IDE 3.验证安装 开发和.NET Core应用程序所需的工具和软件 1.设备:(Windows.Mac.Linux) 2.IDE:Visual Studio.Visual Code 3.NetSDK:软件开发工具包,此工具包有助于开发和运行系统中的应用程序. 如何为构建 .NET Core/ASP.NET Core应用程序准备开发环境? NET Core可以通过两种方式安装: 1.通过安

  • ASP.Net Core基于EF6、Unitwork、Autofac实现Repository模式

    一.实现的思路和结构图 Repository的共同性 有一些公共的方法(增删改查), 这些方法无关于Repository操作的是哪个实体类,可以把这些方法定义成接口IRepository,然后有个基类BaseRepository实现该接口的方法.常见的方法,比如Find, Filter, Delete, Create等 Repository的差异性 每个Repository类又会有一些差异性,应当允许它们能够继承BaseRepository之外,还能够再扩展自己的一些方法.所以每个类都可以再定义

  • ASP.NET Core基于滑动窗口实现限流控制

    目录 前言: 二.固定窗口算法 三.滑动窗口算法 四.实现 六.使用 结论: 前言: 在实际项目中,为了保障服务器的稳定运行,需要对接口的可访问频次进行限流控制,避免因客户端频繁请求导致服务器压力过大. 而​AspNetCoreRateLimit是目前ASP.NET Core下最常用的限流解决方案. 查看它的实现代码,我发现它使用的固定窗口算法. var entry = await _counterStore.GetAsync(counterId, cancellationToken); if

  • ASP.NET Core为Ocelot网关配置Swagger

    1.前言 前端与后端的联系更多是通过API接口对接,API文档变成了前后端开发人员联系的纽带,开始变得越来越重要,而Swagger就是一款让你更好的书写规范API文档的框架.在Ocelot Swagger项目示例中,通过APIGateway项目路由配置网关.上下游服务Swagger.对解决方案中的示例APIServiceA.APIServiceB项目Get方法进行配置,文件配置具体代码如下: { "Routes": [ { //下游服务地址 "DownstreamPathTe

  • ASP.net Core微信平台开发配置Token

    如果先进行微信平台开发,配置Token是第一步.否则往后所有的代码都没办法在平台上跑得动. 但是官方给的源码是PHP的,ASP.net core 配置Token 的版本又少.研究怎么配置Token浪费了我超多时间. 首先登录开发者平台,点击开发者工具--->公众平台测试账号 然后就需要配置我们的接口信息了 先创建一个配置实体 public class WeChatRequestModel { public string signature { get; set; } public string

  • ASP.NET Core中的环境配置

    1.环境变量配置 ASP.NET Core在应用程序启动时读取环境变量(Properties\launchSettings.json)ASPNETCORE_ENVIRONMENT,并将该值存储在IHostingEnvironment.EnvironmentName中.ASPNETCORE_ENVIRONMENT可设置为任意值,但框架只支持三个值:Development(开发).Staging (分阶段)和 Production(生产).如果未设置ASPNETCORE_ENVIRONMENT,则默

随机推荐