Json序列反序列类型处理帮助类
Json序列反序列类型处理帮助类。
- JSON反序列化
- JSON序列化
- 将Json序列化的时间由/Date(1294499956278+0800)转为字符串
- 将时间字符串转为Json时间
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.IO; using System.Runtime.Serialization.Json; using System.Web.Script.Serialization;namespace IM.Common {public class JsonArryHelper{/// <summary>/// JSON序列化/// </summary>public static string JsonSerializer<T>(T t){DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));MemoryStream ms = new MemoryStream();ser.WriteObject(ms, t);string jsonString = Encoding.UTF8.GetString(ms.ToArray());ms.Close();//替换Json的Date字符串string p = @"\\/Date\((\d+)\+\d+\)\\/";MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);Regex reg = new Regex(p);jsonString = reg.Replace(jsonString, matchEvaluator);return jsonString;}/// <summary>/// JSON反序列化/// </summary>/// <param name="json"></param>/// <typeparam name="T"></typeparam>/// <returns></returns>public static T Deserialize<T>(string json){var obj = Activator.CreateInstance<T>();using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(json))){var serializer = new DataContractJsonSerializer(obj.GetType());return (T)serializer.ReadObject(ms);}}/// <summary>/// JSON反序列化/// </summary>public static T JsonDeserialize<T>(string jsonString){//将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);Regex reg = new Regex(p);jsonString = reg.Replace(jsonString, matchEvaluator);DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));T obj;try{obj = (T)ser.ReadObject(ms);}catch{obj = default(T);}return obj;}/// <summary>/// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串/// </summary>private static string ConvertJsonDateToDateString(Match m){string result = string.Empty;DateTime dt = new DateTime(1970, 1, 1);dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));dt = dt.ToLocalTime();result = dt.ToString("yyyy-MM-dd HH:mm:ss");return result;}/// <summary>/// 将时间字符串转为Json时间/// </summary>private static string ConvertDateStringToJsonDate(Match m){string result = string.Empty;DateTime dt = DateTime.Parse(m.Groups[0].Value);dt = dt.ToUniversalTime();TimeSpan ts = dt - DateTime.Parse("1970-01-01");result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds);return result;}public static List<T> JSONStringToList<T>(string jsonStr){var serializer = new JavaScriptSerializer();var objs = serializer.Deserialize<List<T>>(jsonStr);return objs;}} }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Newtonsoft.Json; using System.IO; using System.Web.Mvc; using System.Globalization;namespace IM.Common {/// <summary>/// 序列化操作类/// <para>创建作者:changjin</para>/// <para>创建日期:2010/10/25</para>/// </summary>public class JsonSerialize{/// <summary>/// 序列化对象/// <para>创建作者:changjin</para>/// <para>创建日期:2010/12/28</para>/// </summary>/// <param name="obj">序列化的对象</param>/// <returns>序列化后的json字符串</returns>public static String SerializeObject(Object obj){//StringWriter sw = new StringWriter(CultureInfo.InvariantCulture);//JsonSerializer jsonSerializer = new JsonSerializer();//jsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;//JsonWriter jsonWriter =// jsonWriter.Formatting = Formatting.Indented;// jsonSerializer.Serialize(jsonWriter, obj);//return sw.ToString();return JsonConvert.SerializeObject(obj);}public static String SerializeObject1(Object obj){//StringWriter sw = new StringWriter(CultureInfo.InvariantCulture);//JsonSerializer jsonSerializer = new JsonSerializer();//jsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;//JsonWriter jsonWriter =// jsonWriter.Formatting = Formatting.Indented;// jsonSerializer.Serialize(jsonWriter, obj);//return sw.ToString();return JsonConvert.SerializeObject(obj, Formatting.Indented);}/// <summary>/// 对象反序列化/// <para>创建作者:changjin</para>/// <para>创建日期:2010/12/28</para>/// </summary>/// <param name="jsonString">json对象字符串</param>/// <param name="type">反序列化对象类型</param>/// <returns>反序列化后的对象</returns>public static Object DeserializeObject(String jsonString, Type type){return JsonConvert.DeserializeObject(jsonString, type.GetType());}/// <summary>/// 对象反序列化/// <para>创建作者:changjin</para>/// <para>创建日期:2010/12/28</para>/// </summary>/// <param name="jsonString">json对象字符串</param>/// <param name="type">反序列化对象类型</param>/// <returns>反序列化后的对象</returns>public static T DeserializeObject<T>(String jsonString){return JsonConvert.DeserializeObject<T>(jsonString);}} }
转载于:https://www.cnblogs.com/huhangfei/p/4997191.html
Json序列反序列类型处理帮助类相关推荐
- C#将Json字符串反序列化成List对象类集合
usingSystem.IO; usingSystem.Web.Script.Serialization; usingSystem.Runtime.Serialization.Json; //工具类 ...
- Python: Json串反序列化为自定义类对象
最近刚接触到python,就想到了如何反序列化json串.网上找了一下,大部分都是用json模块反序列化为python数据结构(字典和列表).如果对json模块不了解的参考菜鸟教程.然后我在此基础上将 ...
- json 反序列化 父子类型_json类序列化与反序列化参考
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Runtime.Ser ...
- json 反序列化 父子类型_Jaskson精讲第7篇-类继承关系下的JSON序列化与反序列化JsonTypeInfo...
Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...
- java可变长字符串类型,Java 常用类——StringBufferamp;StringBuilder【可变字符序列】_IT技术_软件云...
一.字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象. Demo: 1 public class StringDemo { 2 pub ...
- JSON字符串封装成Bean对象/JSON串反序列化成实体类对象/JSON字符串转换成Java对象
文章目录 使用阿里巴巴的 JSON 使用 ObjectMapper JSON字段与实体类属性不一致 首先,我们建立一个实体类,这里简单定义了 name.sex.age 三个属性,以及 get.set. ...
- JavaScriptSerializer-枚举的JSON序列化为字符串
我有一个包含enum属性的类,并在使用JavaScriptSerializer序列化对象后,我的json结果包含枚举的整数值,而不是其string " name". 有没有一种方法 ...
- c#3.0关于JSON简单操作的实用帮助类(泛型实现)
关于json的操作,网上一搜一大把.避免重复造轮子,整理发布一个笔者在项目开发中经常用到的一个json实用帮助类,泛型实现,非常方便.不废话了,贴代码: 1.json操作的帮助类: Code usin ...
- quicktype游戏java程序_使用QuickType工具从json自动生成类型声明代码
一.QuickType 工具功能简介 QuickType 是一款可以根据 json 文本生成指定语言(如 Type Script,C++,,Java,C#,Go 等)类型声明代码的工具. 例如我们在写 ...
最新文章
- Apple WatchKit 初探
- python查看和更改当前工作目录
- Android Studio: finished with non-zero exit value2
- elasticsearch的join查询
- deepfake 图片_DeepFake克星来了!简单2步算法,造假图像无处可逃
- document.body.scrollTop以及一些备忘
- php写带分页的留言板,php中分页程序之基于留言板详解_PHP教程
- WinForm支持拖拽效果
- java二进制 中文_Java 实现中文与二进制代码互转
- 王益:分布式机器学习的故事
- 恢复出厂设置 卡住10分钟问题
- atitit. web组件化原理与设计
- IDM下载器插件 让浏览器不在限速
- CodeForces 283C Coin Troubles 分析+背包思想
- windows 7z windows cannot create symbolic link : 客户端没有所需的特权。
- 【开关电源】matlab/simulink入门
- 【PADS_002】【添加泪滴】
- 量化交易策略 - 优化均仓策略
- 使用FEST-Swing测试GUI
- brackets 快捷键 有大用
热门文章
- 敏捷开发免费管理工具——火星人预览之四:故事板,燃尽图,我的工作项
- 【SpringBoot】 logback 日志的集成
- Manjaro_xfce 安装后配置
- Linux下安装vim
- jQuery easyui中combox 自定义样式 去掉下拉框的空白
- python进阶11并发之七多种并发方式的效率测试
- 财务报表开发实例分析:几个通用维度介绍与关键点
- com.fr.decision.webservice.v10.login.LoginService
- 跨语言之间的socket通信(C--Java的握手)(基础篇转)
- python学习——正则表达式