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 ...
随机推荐
- JAVA基础知识总结10(包类)
包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ...
- js中的操作符
写在前面 js语法 DOM对象(把body,div,p等节点树看成一个对象) BOM对象(把浏览器的地址栏历史记录DOM等装在一个对象) 浏览器是宿主,但js的宿主不限于浏览器,也可以是服务器,如no ...
- php get_include_path();是干嘛的、??还有set_include_path();/?????
首先 我们来看这个全局变量:__FILE__ 它表示文件的完整路径(当然包括文件名在内) 也就是说它根据你文件所在的目录不同,有着不同的值:当然,当它用在包行文件中的时候,它的值是包含的路径: 然后: ...
- C++面向对象类的实例题目五
题目描述: 编写一个程序,采用一个类求n!,并输出5!的值. 程序代码: #include<iostream> using namespace std; class CFactorial ...
- winform combobox绑定数据
mboBox下拉菜单控件,在数据库内的ComboBox应用的表进行修改时,如果是用的普通方法,显示数据一个方法,添加数据一个方法 这样会导致程序后期维护难度增加,在这里使用数据绑定来让ComboBox ...
- JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-009Polymorphic collections(@OneToMany(mappedBy = "user")、@ManyToOne、)
一.代码 1. package org.jpwh.model.inheritance.associations.onetomany; import org.jpwh.model.Constants; ...
- 后台执行UNIX/Linux命令和脚本的五种方法
hiveserver 后台启动 nohup "${HIVE_HOME}"/bin/hive --service hiveserver2 & 1. 使用&符号在后台执 ...
- CF 959E Mahmoud and Ehab and the xor-MST
第一反应是打表找规律……(写了个prim)但是太菜了没找到 于是开始怀疑是不是我的表错了,又写了一个克鲁斯卡尔,然后结果是一样的……(捂脸) 后来从克鲁斯卡尔的算法上发现了一点东西,发现只有2的幂次长 ...
- js中使用Java的方式
1. 使用DWR框架 2. 使用AJAX方式
- raspberry pi 3 openjdk 性能低下解决方法
在使用nutch 是时候发现generate的性能很低,应该是openjdk的问题. orcale 实际已经提供了armhf的jdk,替换下性能就上去了 jdk下载链接:Download 配置方法和普 ...