zoukankan      html  css  js  c++  java
  • 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字符串转实体对象,不管字符串的字段是大写还是小写都可以转为实体

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

  • 相关阅读:
    毕设(五)ListView
    毕设(四)ListBox
    毕设(三)NotifyIcon
    hdu 1.2.3
    ZOJ 1789 The Suspects
    ZOJ 2833 Friendship
    git
    yum wget rpm
    上传绕过
    LAMP 和 LNMP
  • 原文地址:https://www.cnblogs.com/Yisijun/p/13212244.html
Copyright © 2011-2022 走看看