问题描述:
最近采用ABP框架 开发小程序,发现自动生成的动态Web API 接口返回的Json数据格式有两个问题:
1、日期格式问题如:"creationTime": "2018-11-28T19:18:00", //中间多了一个T
2、对象属性问题如: {
"resourceType_Code": "Platform_MsgRemark",
"resourceType_Name": "留言备注",
"creationTime": "2018-11-28T19:18:00",
}//首字母被自动的小写了
翻遍了整个百度 找到的清一色无效解决方案 ,差不多都是配置如下:services.AddMvc().AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); options.SerializerSettings.DateFormatString = "yyyy-MM-dd"; });
解决方案:
1、创建自定义配置类:
public class MyCustomContractResolver : AbpContractResolver
{
protected override void ModifyProperty(MemberInfo member, JsonProperty property)
{
if (property.PropertyType != typeof(DateTime) && property.PropertyType != typeof(DateTime?))
{ return; }
property.Converter = new AbpDateTimeConverter()
{ DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
}
}
2、在Startup.cs->public IServiceProvider ConfigureServices(IServiceCollection services){}中注入自定义类:
services.PostConfigure<MvcJsonOptions>(options =>
{
options.SerializerSettings.ContractResolver = new MyCustomContractResolver();
});
注:被这个问题困惑了好几天,突然灵机一动想到遇坑的人肯定不止我一个,于是跑Github ABP开源项目 Issues中找到了官方给的暂时的比较丑陋的解决方案, but it works !