Newtonsoft.Json 自定义序列化格式转化器
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; }
}
Newtonsoft.Json 自定义序列化格式转化器的更多相关文章
- Newtonsoft.Json 自定义序列化器---时间
IsoDateTimeConverter _IsoDateTimeConverter = new IsoDateTimeConverter() { DateTimeFormat = "yyy ...
- 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型;
导航目录: Newtonsoft.Json 概述 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型: 二:C#对象.集合.DataTable与Json内容互转示例: ...
- mvc 使用Newtonsoft.Json进行序列化json数据
mvc 使用Newtonsoft.Json进行序列化json数据 JsonResult 使用js 序列号化,先集成扩展.使用newtonsoft http://blog.csdn.net/zhang ...
- 在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据
在.Net Core 3.0中 内置了一套Json序列化/反序列化方案,默认可以不再依赖,不再支持 Newtonsoft.Json. 但是.NET Core 3.0 System.Text.Jso ...
- 基于Python PIL实现简单图片格式转化器
基于Python PIL实现简单图片格式转化器 目录 基于Python PIL实现简单图片格式转化器 1.简介 2.前期资料准备 2.1.1如何实现图片格式转换? 2.1.2如何保存需要大小的图片? ...
- Newtonsoft.Json 的序列化与反序列化
首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一 ...
- .Net Core 自定义序列化格式
序列化对大家来说应该都不陌生,特别是现在大量使用WEBAPI,JSON满天飞,序列化操作应该经常出现在我们的代码上. 而我们最常用的序列化工具应该就是Newtonsoft.Json,当然你用其它工具类 ...
- 【转】Newtonsoft.Json 的序列化与反序列化
http://www.cnblogs.com/08shiyan/p/3464028.html 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Fr ...
- C# 通过Newtonsoft.Json.dll序列化日期的处理
Newtonsoft.Json.dll提供了非常好的Json序列化和反序列化方式,但是对日期的处理却让我纠结了很久.首先定义类如下: public class Student{ public int ...
随机推荐
- python爬虫框架(1)--框架概述
框架概述 其中比较好用的是 Scrapy 和PySpider.pyspider上手更简单,操作更加简便,因为它增加了 WEB 界面,写爬虫迅速,集成了phantomjs,可以用来抓取js渲染的页面.S ...
- NIO/AIO
1 NIO NEW IO 的简称,新的java I/O标准,jdk1.4纳入,有以下特点: (1)NIO基于block块,以块(硬盘数据块)为单位处理数据,比旧式的io基于流的效率高. (2)为各个基 ...
- 离散对数的求解(bsgs)
bsgs算法 主要用来解决${A^x} = B(\bmod C)$(c是质数),都是整数,已知A.B.C求x. 例:poj 2417 Discrete Logging 具体步骤如下: 先把$x = i ...
- undefined reference to `clock_gettime
下面这个错误通常是因为链接选项里漏了-lrt,但有时发现即使加了-lrt仍出现这个问题,使用nm命令一直,会发现-lrt最终指向的文件没有包含任何symbol,这个时候,可以找相应的静态库版本libr ...
- MyBatis基本查询、条件查询、查询排序
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...
- Java50道经典习题-程序48 数字加密
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换.分析:例如原始 ...
- C#多线程 线程嵌套调用问题
线程嵌套指的是:线程A的执行代码启动了线程B,线程B的执行代码又启动了线程C. 我原本以为线程A被Abort后,线程B会自动被Abort,但是我大错特错了. 在这种场景下,线程的管理就非常重要了. 线 ...
- C++时间操作的汇总
. 获取当前时间 time_t cur_time = time(NULL); . 把整数时间转为字符串时间 string GetStringTime(const time_t time) { stru ...
- [Spring Boot]Request method 'GET' not supported
在网上查了些资料没有解决,检查代码发现 @PostMapping public String add(Employee employee){ System.out.println(employee); ...
- 状压DP【洛谷P1879】 [USACO06NOV]玉米田Corn Fields
P1879 [USACO06NOV]玉米田Corn Fields 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形 ...