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(, , );
    dt = dt.AddMilliseconds(long.Parse(m.Groups[].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[].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);
    } }
    }

Json序列反序列类型处理帮助类的更多相关文章

  1. Newtonsoft.Json 序列 反序列 IEnumerable

    下面是memcached 中获取的obj 类型的数据,转list string sessionId = Request.Cookies["sessionId"].Value;//授 ...

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

    摘自:http://blog.csdn.net/cdefg198/article/details/7520398 using System.IO; using System.Web.Script.Se ...

  3. 类对象序列化为json串,json串反序列化为类对象

    1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...

  4. python 字符与字节 json序列和反序列及支持的类型

    b = b"demo" s = "demo" # 字符串转字节 s = bytes(s, encoding = "utf8") s = st ...

  5. 将Dictionary序列化为json数据 、json数据反序列化为Dictionary

    需要引用System.Web.Extensions  dll类库 /// <summary> /// 将json数据反序列化为Dictionary /// </summary> ...

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

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

  7. 咏南中间件JSON序列类

    咏南中间件JSON序列类 1)支持跨平台.跨语言 2)支持主从表数据序列.还原,支持任意数量的表 主从表数据序列为JSON字符串样式: { "rows": [ { "FD ...

  8. 将JSON字符串反序列化为指定的.NET对象类型

    目录导航: 前言: 方法一.在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 方法二.直接将JSON字符串格式数据反序列化转化为字典数据(简单JSON字符 ...

  9. .NET3.5中JSON用法以及封装JsonUtils工具类

    .NET3.5中JSON用法以及封装JsonUtils工具类  我们讲到JSON的简单使用,现在我们来研究如何进行封装微软提供的JSON基类,达到更加方便.简单.强大且重用性高的效果. 首先创建一个类 ...

随机推荐

  1. Scene is unreachable due to lack of entry points and does not have an identifier for runtime access

    使用Storyboard时出现以下警告: warning: Unsupported Configuration: Scene is unreachable due to lack of entry p ...

  2. Multiple dex files define Lcom/sina/sso/RemoteSSO错误解决办法

    在安卓上遇到了Multiple dex files define Lcom/sina/sso/RemoteSSO的编译错误 在网上找解决办法 搜到了解决办法是这样的 方案1:Eclipse->P ...

  3. 谈.Net委托与线程——解决窗体假死

    转自:http://www.cnblogs.com/smartls/archive/2011/04/08/2008981.html#2457370   引言 在之前的<创建无阻塞的异步调用> ...

  4. Bootstrap_排版_文字样式

    一.段落 段落是排版中另一个重要元素之一.在Bootstrap中为文本设置了一个全局的文本样式(这里所说的文本是指正文文本): 1.全局文本字号为14px(font-size). 2.行高为1.428 ...

  5. 三种php连接access数据库方法

    种是利用php的pdo,一种是odbc,com接口来与access数据库连接.利用pdo与access数据库连接 $path ="f:fontwww.jb51.netspiderresult ...

  6. Delphi-Delete 过程

    过程名称 Delete 所在单元 System 过程原型 procedure Delete ( var Source : string; StartChar : Integer; Count : In ...

  7. Python学习笔记:06魔法方法和迭代器

    魔法方法,属性和迭代器 新式类 通过赋值语句__metaclass=true或者class NewStyle(object)继承内建类object,可以表明是新式类. 构造方法 对象被创建后,会立即调 ...

  8. ISO14443协议中,卡片对RATS,PPS,IBLOCK的处理约定

    这几天总是看到有人因为这几条规则没处理好,结果检测时通不过,其实看看最新版的ISO14443协议就明白了. 协议中明确要求几条: 1.在激活状态后,如果收到一个无错的RATS命令后,卡片返回atr,此 ...

  9. OpenRisc-47-or1200的WB模块分析

    引言 “善妖善老,善始善终”,说的是无论什么事情要从有头有尾,别三分钟热度. 对于or1200的流水线来说,MA阶段是最后一个阶段,也是整条流水线的收尾阶段,负责战场的清扫工作.比如,把运算指令的运算 ...

  10. 常用SNS开源系统比较

    常用SNS开源系统比较 这 几天看了很多关于SNS(社交网络服务) 的东西..得到了不少启发..目前的IDEA是..可以在学校弄一个试试..主打的东西不能和现有的SNS冲突(如校内网).利用本地优势. ...