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字符串轉實體對象,不管字符串的字段是大寫還是小寫都可以轉為實體

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM