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序列反序列类型处理帮助类相关推荐

  1. C#将Json字符串反序列化成List对象类集合

    usingSystem.IO; usingSystem.Web.Script.Serialization; usingSystem.Runtime.Serialization.Json; //工具类 ...

  2. Python: Json串反序列化为自定义类对象

    最近刚接触到python,就想到了如何反序列化json串.网上找了一下,大部分都是用json模块反序列化为python数据结构(字典和列表).如果对json模块不了解的参考菜鸟教程.然后我在此基础上将 ...

  3. json 反序列化 父子类型_json类序列化与反序列化参考

    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Runtime.Ser ...

  4. json 反序列化 父子类型_Jaskson精讲第7篇-类继承关系下的JSON序列化与反序列化JsonTypeInfo...

    Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...

  5. java可变长字符串类型,Java 常用类——StringBufferamp;StringBuilder【可变字符序列】_IT技术_软件云...

    一.字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象. Demo: 1 public class StringDemo { 2 pub ...

  6. JSON字符串封装成Bean对象/JSON串反序列化成实体类对象/JSON字符串转换成Java对象

    文章目录 使用阿里巴巴的 JSON 使用 ObjectMapper JSON字段与实体类属性不一致 首先,我们建立一个实体类,这里简单定义了 name.sex.age 三个属性,以及 get.set. ...

  7. JavaScriptSerializer-枚举的JSON序列化为字符串

    我有一个包含enum属性的类,并在使用JavaScriptSerializer序列化对象后,我的json结果包含枚举的整数值,而不是其string " name". 有没有一种方法 ...

  8. c#3.0关于JSON简单操作的实用帮助类(泛型实现)

    关于json的操作,网上一搜一大把.避免重复造轮子,整理发布一个笔者在项目开发中经常用到的一个json实用帮助类,泛型实现,非常方便.不废话了,贴代码: 1.json操作的帮助类: Code usin ...

  9. quicktype游戏java程序_使用QuickType工具从json自动生成类型声明代码

    一.QuickType 工具功能简介 QuickType 是一款可以根据 json 文本生成指定语言(如 Type Script,C++,,Java,C#,Go 等)类型声明代码的工具. 例如我们在写 ...

最新文章

  1. Apple WatchKit 初探
  2. python查看和更改当前工作目录
  3. Android Studio: finished with non-zero exit value2
  4. elasticsearch的join查询
  5. deepfake 图片_DeepFake克星来了!简单2步算法,造假图像无处可逃
  6. document.body.scrollTop以及一些备忘
  7. php写带分页的留言板,php中分页程序之基于留言板详解_PHP教程
  8. WinForm支持拖拽效果
  9. java二进制 中文_Java 实现中文与二进制代码互转
  10. 王益:分布式机器学习的故事
  11. 恢复出厂设置 卡住10分钟问题
  12. atitit.  web组件化原理与设计
  13. IDM下载器插件 让浏览器不在限速
  14. CodeForces 283C Coin Troubles 分析+背包思想
  15. windows 7z windows cannot create symbolic link : 客户端没有所需的特权。
  16. 【开关电源】matlab/simulink入门
  17. 【PADS_002】【添加泪滴】
  18. 量化交易策略 - 优化均仓策略
  19. 使用FEST-Swing测试GUI
  20. brackets 快捷键 有大用

热门文章

  1. 敏捷开发免费管理工具——火星人预览之四:故事板,燃尽图,我的工作项
  2. 【SpringBoot】 logback 日志的集成
  3. Manjaro_xfce 安装后配置
  4. Linux下安装vim
  5. jQuery easyui中combox 自定义样式 去掉下拉框的空白
  6. python进阶11并发之七多种并发方式的效率测试
  7. 财务报表开发实例分析:几个通用维度介绍与关键点
  8. com.fr.decision.webservice.v10.login.LoginService
  9. 跨语言之间的socket通信(C--Java的握手)(基础篇转)
  10. python学习——正则表达式