Newtonsoft.Json 自定义序列化特性
来源:互联网 发布:显示器测试软件 编辑:程序博客网 时间:2024/06/06 17:42
目前在项目中经常使用Newtonsoft.Json,因项目需要对其中的特定数据类型序列化有特殊要求,特地学习了下如何对Newtonsoft.Json的序列化进行自定义扩展开发。
1、对DateTime类型,序列化输出为时间戳;
2、对string类型,序列化输出为Unicode字符。
针对需求1的序列化扩展特性代码:
/// <summary> /// Newtonsoft.Json序列化扩展特性 /// <para>DateTime序列化(输出为时间戳)</para> /// </summary> public class TimestampConverter : JsonConverter { public override bool CanConvert(Type objectType) { return objectType == typeof(DateTime); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return ConvertDateTime.ConvertIntDateTime(int.Parse(reader.Value.ToString())); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteValue(ConvertDateTimeInt((DateTime)value)); } public static DateTime ConvertIntDateTime(int aSeconds) { return new DateTime(1970, 1, 1).AddSeconds(aSeconds); } public static int ConvertDateTimeInt(DateTime aDT) { return (int)(aDT - new DateTime(1970, 1, 1)).TotalSeconds; } }
针对需求2的序列化扩展特性代码:
/// <summary> /// Newtonsoft.Json序列化扩展特性 /// <para>String Unicode 序列化(输出为Unicode编码字符)</para> /// </summary> public class UnicodeConverter : JsonConverter { public override bool CanConvert(Type objectType) { return objectType == typeof(string); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return reader.Value; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteValue(ToUnicode(value.ToString())); } public static string ToUnicode(string str) { byte[] bts = Encoding.Unicode.GetBytes(str); string r = ""; for (int i = 0; i < bts.Length; i += 2) { r += "\\u" + bts[i + 1].ToString("X").PadLeft(2, '0') + bts[i].ToString("X").PadLeft(2, '0'); } return r; } }
使用方式:
public class Base { [JsonConverter(typeof(TimestampConverter))] public DateTime ExpiresTime { get;set; } [JsonConverter(typeof(UnicodeConverter))] public string Name { get;set; } }
0 0
- Newtonsoft.Json 自定义序列化特性
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json.JsonConvert 序列化日期时间
- Newtonsoft.Json序列化和反序列
- .net json序列化组件Json.NET(Newtonsoft.Json)
- mvc 使用Newtonsoft.Json进行序列化json数据
- C# Json.NET序列化之Newtonsoft.Json
- Json序列化之.NET开源类库Newtonsoft.Json的研究
- 微观SOA:服务设计原则及其实践方式
- J2EE专题之经典书籍篇
- Effective Java 第一条:考虑用静态工厂方法代替构造器
- arm学习笔记-时钟(s3c2451)
- hihoCoder(1)——hiho密码
- Newtonsoft.Json 自定义序列化特性
- java中线程队列BlockingQueue的用法
- LintCode_9_Fizz Buzz 问题
- 应用集成方案概述
- CCF认证-ISBN号码
- 数据结构 线性表
- 实习总结01
- CV Datasets on the web
- 日记