ABP .Net Core 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(); });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM