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(); } }
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); } }
3、实体对象
public class MyTestItem { public string BillTitle { get; set; } public string BillDetail { get; set; } public string BillSn { get; set; } }
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();
写在最后:JSON字符串转实体对象,不管字符串的字段是大写还是小写都可以转为实体
写写博客,方便自己也方便有需要的人~~