一、 前言 我們採用ABP架構用MVC Controller或Web API返回給前端結果ToJson序列化後得到的屬性命名都是採用js的駝峰格式,即首字母小寫,後面單詞首字母大寫的格式(如:後臺屬性名為OrderName,返回的前端js為orderName)。但在實際項目開發中由於某種原因(比如給 ...
一、 前言
我們採用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(); });