JSON之实体对象转JSON字符串,字段名全部转为小写

需求:把实体通过JsonConvert.SerializeObject 转换为JSON字符串时,默认情况下,字段是什么命名方式,转换之后的JSON字符串的字段也是什么命名方式显示的,例如:实体字段是帕斯卡命名法(首字母大写,其他单词首字母大写)BillTitle,转换后 JSON字符串对应的字段也是 BillTitle,现在在不改变实体字段的前提下,将JSON字符串字段名称全部转换为小写。

解决方案:自定义JSON序列化字段格式  自定义一个ContractResolver类,继承DefaultContractResolver  重写里面的 ResolvePropertyName 函数即可

效果如图所示:

 

 实现代码:

1、自定义Json序列化字段格式

     /// <summary>
    /// 自定义JSON序列化字段格式
    /// </summary>
    public class LowerContractResolver : DefaultContractResolver
    {
        protected override string ResolvePropertyName(string propertyName)
        {
            return propertyName.ToLower();
        }
    }
View Code
2、Json帮助类
public static class JsonHelper
    {

        /// <summary>
        /// 对象转json字符串 字段名全部小写
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string ObjToJsonStr<T>(T t) where T : class
        {
            JsonSerializerSettings settings = new JsonSerializerSettings()
            {
                ContractResolver = new LowerContractResolver()
            };
            return JsonConvert.SerializeObject(t, settings);

        }
        /// <summary>
        /// 对象转json字符串 默认转换方式
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string ObjToJsonStrWithDeraultWay<T>(T t) where T : class
        {
            return JsonConvert.SerializeObject(t);

        }

    }
View Code
3、实体对象
public class MyTestItem
    {
        public string BillTitle { get; set; }
        public string BillDetail { get; set; }
        public string BillSn { get; set; }
    }
View Code
4、函数调用
MyTestItem myTestItem = new MyTestItem() { BillTitle = "Bill 名称", BillDetail = "Bill 详情", BillSn = "Bill序列号" };
            string defaultFieldJsonString = JsonHelper.ObjToJsonStrWithDeraultWay<MyTestItem>(myTestItem);
            string lowerFieldJsonString =  JsonHelper.ObjToJsonStr<MyTestItem>(myTestItem);
            Console.WriteLine("================默认转换================");
            Console.WriteLine(defaultFieldJsonString);
            Console.WriteLine("================字段名小写转换================");
            Console.WriteLine(lowerFieldJsonString);
            Console.ReadKey();
View Code

 写在最后:JSON字符串转实体对象,不管字符串的字段是大写还是小写都可以转为实体

写写博客,方便自己也方便有需要的人~~

posted @ 2020-06-30 10:19  会编程的厨子  阅读(3540)  评论(0编辑  收藏  举报