Newtonsoft.Json 自定义序列化格式转化器
2024-08-30 09:14:06
public static class JsonHelper
{
static JsonHelper()
{
Newtonsoft.Json.JsonSerializerSettings setting = new Newtonsoft.Json.JsonSerializerSettings();
JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
{
//日期类型默认格式化处理
setting.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
setting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //空值处理
setting.NullValueHandling = NullValueHandling.Ignore; //高级用法九中的Bool类型转换 设置
//setting.Converters.Add(new BoolConvert("是,否")); if (setting.Converters.FirstOrDefault(p=>p.GetType()==typeof(JsonCustomDoubleConvert))==null)
{
setting.Converters.Add(new JsonCustomDoubleConvert());
} return setting;
});
} public static String ToJsonStr<T>(this T obj) where T : class
{
if (obj == null)
return string.Empty;
return JsonConvert.SerializeObject(obj, Formatting.Indented); }
public static T ToInstance<T>(this String jsonStr) where T : class
{
if (string.IsNullOrEmpty(jsonStr))
return null;
try
{
var instance = JsonConvert.DeserializeObject<T>(jsonStr); return instance;
}
catch
{
return null;
} }
} /// <summary>
/// 自定义数值类型序列化转换器(默认保留3位)
/// </summary>
public class JsonCustomDoubleConvert : CustomCreationConverter<double>
{
/// <summary>
/// 序列化后保留小数位数
/// </summary>
public virtual int Digits { get;private set; } /// <summary>
/// .ctor
/// </summary>
public JsonCustomDoubleConvert()
{
this.Digits = ;
} /// <summary>
/// .ctor
/// </summary>
/// <param name="digits">序列化后保留小数位数</param>
public JsonCustomDoubleConvert(int digits)
{
this.Digits = digits;
} /// <summary>
/// 重载是否可写
/// </summary>
public override bool CanWrite { get { return true; } } /// <summary>
/// 重载创建方法
/// </summary>
/// <param name="objectType"></param>
/// <returns></returns>
public override double Create(Type objectType)
{
return 0.0;
} /// <summary>
/// 重载序列化方法
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
/// <param name="serializer"></param>
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value == null)
{
writer.WriteNull();
}
else
{
var formatter = ((double)value).ToString("N" + Digits.ToString());
writer.WriteValue(formatter);
} }
} /// <summary>
/// 自定义数值类型序列化转换器(无小数位)
/// </summary>
public class JsonCustomDoubleWith0DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留1位)
/// </summary>
public class JsonCustomDoubleWith1DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留2位)
/// </summary>
public class JsonCustomDoubleWith2DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留3位)
/// </summary>
public class JsonCustomDoubleWith3DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留4位)
/// </summary>
public class JsonCustomDoubleWith4DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留5位)
/// </summary>
public class JsonCustomDoubleWith5DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
}
class Order
{
public int Id { get; set; } public static int OrderId = GetOrderId(); public IEnumerable<int> Missions = null; static int GetOrderId()
{
return new Random().Next(, );
} [JsonConverter(typeof(JsonCustomDoubleWith0DigitsConvert))]
public double OrderAmount { get; set; }
}
最新文章
- MATLAB的GUI
- git pull提示当前不在某个分支上
- Web前端性能优化教程06:减少DNS查找、避免重定向
- GreenPlum简单性能测试与分析--续
- GridView CheckBox 全选
- 异步设备IO 《windows核心编程》第10章学习
- 《Journey》风之旅人;
- 手把手教你修改pcduino系统默认的音频输出
- MYSQL-用户权限的验证过程(转)
- Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置
- 必应语音API(Bing text to speech API)
- SQLServer语言之DDL,DML,DCL,TCL
- DevExpress GridControl使用方法总结2
- XML(五)dom4j增删改查
- GC浅析之三-性能调优经验总结
- linux--GCC简单用法
- Some_tools
- 多播知识by 陈胜君
- What does “=>;” mean in import in scala?(转自StackOverflow问答)
- Template 动画