排名
1
文章
860
粉丝
112
评论
163
.net core自定义项目模板,创建自己的模板项目,使用命令行创建模板项目
尘叶心繁 : 可以可以讲真的我都想弄个模板
net core webapi post传递参数
庸人 :
确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 : 已精
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 :
疯狂反射
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

在ConfigureServices中可以进行全局json配置,例如,全局处理一下事件格式问题
- services.AddMvc(option =>
- {
- //option.Filters.Add(typeof(VisitorLogFilter));//全局注册ServiceFilter
- }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddJsonOptions(options =>
- {
- // 格式化json输出的日期格式
- options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
- //options.SerializerSettings.ContractResolver = new DefaultContractResolver
- //{
- // NamingStrategy = new SnakeCaseNamingStrategy() // json属性名下划线命名方式
- //};
- });
特性的方式改变日期格式(适合需要特殊处理日期格式的地方):
- public class NewtonsoftDateConverter : IsoDateTimeConverter
- {
- public NewtonsoftDateConverter()
- {
- base.DateTimeFormat = "yyyy-MM-dd";
- }
- }
使用:
- [JsonConverter(typeof(NewtonsoftDateConverter))]
- public Nullable<System.DateTime> CreateTime { get; set; }
上面的写法是比较老的写法了,比较新一些的写法可以参考:
.net core 3.0+ json时间格式化 ,全局配置json时间序列化格式 - 忆点点的专栏 - TNBLOG
https://www.tnblog.net/aojiancc/article/details/3347
修改命名规则
配置首字母小写,其余大写按驼峰命名法
- //按驼峰命名法(首字母小写,其余的单词首字母都是大写)
- options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
默认命名规则(不改变任何字符的情况下序列化)
- //默认命名规则(不改变任何字符的情况下序列化)
- options.SerializerSettings.ContractResolver = new DefaultContractResolver();
如果你想要自己定义一种命名规范,例如全部是小写可以重写DefaultContractResolver即可
- public class LowerCasePropertyNamesContractResolver : DefaultContractResolver
- {
- protected override string ResolvePropertyName(string propertyName)
- {
- return propertyName.ToLower();
- }
- }
通过Newtonsoft.Json实现动态修改名字
有时候我们想要给不同的用户或者客户端提供不同的名字,又比如不同前台的组件需要不同格式的数据,我们可以动态的修改名字就不用为每个都重新定义一个新的模型。
和修改返回字段一样的去重写DefaultContractResolver
- public class PropsContractResolver : DefaultContractResolver
- {
- Dictionary<string, string> dict_props = null;
-
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="props">传入的属性数组</param>
- public PropsContractResolver(Dictionary<string, string> dictPropertyName)
- {
- //指定字段要序列化成什么名称
- this.dict_props = dictPropertyName;
- }
-
- protected override string ResolvePropertyName(string propertyName)
- {
- string newPropertyName = string.Empty;
- if (dict_props != null && dict_props.TryGetValue(propertyName, out newPropertyName))
- {
- return newPropertyName;
- }
- else
- {
- //没有找到就用原来的
- return base.ResolvePropertyName(propertyName);
- }
- }
- }
使用:
- JsonSerializerSettings jsetting = new JsonSerializerSettings();
- //jsetting.ContractResolver = new LimitPropsContractResolver(new string[] { "title", "aClass" }, LimitType.Contains);
- Dictionary<string, string> dictProp = new Dictionary<string, string> { { "Id", "MyId" }, { "Title", "MyTitle" } };
- jsetting.ContractResolver = new PropsContractResolver(dictProp);
- string jsonstr = JsonConvert.SerializeObject(art, Formatting.Indented, jsetting);
这里我们把Id修改成了MyId,Title修改成了MyTitle
net core api中默认使用的是Newtonsoft.Json,关于net core api中Newtonsoft.Json的更多用法可以参考:
http://www.tnblog.net/aojiancc2/article/details/2828
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价