1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Object 类 Json 序列化 转大小写 字母ASCII排序 时间格式化 Decimal 2位小数形式

Object 类 Json 序列化 转大小写 字母ASCII排序 时间格式化 Decimal 2位小数形式

时间:2023-06-15 07:13:32

相关推荐

Object 类 Json 序列化 转大小写 字母ASCII排序 时间格式化 Decimal 2位小数形式

using Newtonsoft.Json;using Newtonsoft.Json.Linq;using Newtonsoft.Json.Serialization;using System;using System.Collections.Generic;using System.Linq;namespace Vip.System.Model{public class JsonUtils{/// <summary>/// Json 序列化/// 1. 按首字母排序/// 2. 时间格式化去除 T/// 3. 所有参数转小写/// 4. 格式化 Decimal 数据类型 2位小数形式/// </summary>/// <param name="obj"></param>/// <returns></returns>public static string serializeObject(object obj){JsonSerializerSettings setting = new JsonSerializerSettings{NullValueHandling = NullValueHandling.Ignore, ContractResolver = new LowerContractResolver(), //转换小写字母Converters = new List<JsonConverter>() {new Newtonsoft.Json.Converters.IsoDateTimeConverter(){ DateTimeFormat="yyyy-MM-dd HH:mm:ss" }}};//格式化 Decimal 数据类型 2位小数形式setting.Converters.Add(new DecimalFormatConverter());string strData = JsonConvert.SerializeObject(obj, Formatting.None, setting);JObject jobject = JObject.Parse(strData);SortedDictionary<string, object> target = KeySort(jobject);string jsonStr = JsonConvert.SerializeObject(target);return jsonStr;}/// <summary>/// 排序/// </summary>/// <param name="obj"></param>/// <returns></returns>public static SortedDictionary<string, object> KeySort(JObject obj){var res = new SortedDictionary<string, object>();foreach (var x in obj){if (x.Value is JValue) res.Add(x.Key, x.Value);else if (x.Value is JObject) res.Add(x.Key, KeySort((JObject)x.Value));else if (x.Value is JArray){var tmp = new SortedDictionary<string, object>[x.Value.Count()];for (var i = 0; i < x.Value.Count(); i++){tmp[i] = KeySort((JObject)x.Value[i]);}res.Add(x.Key, tmp);}}return res;}}/// <summary>/// 转换小写/// </summary>public class LowerContractResolver: DefaultContractResolver{protected override string ResolvePropertyName(string propertyName){return propertyName.ToLower();}}/// <summary>/// 格式化Decimal/// </summary>public class DecimalFormatConverter : JsonConverter{public override bool CanConvert(Type objectType){return (objectType == typeof(decimal));}public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer){writer.WriteValue(string.Format("{0:N2}",value));}public override bool CanRead{get { return false; }}public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer){throw new NotImplementedException();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。