Json序列化
来源:互联网 发布:慧算账软件 编辑:程序博客网 时间:2024/05/27 12:22
最近在学习FyiReporting的源码,参考FyiReporting的报表对象定义,结合自己在工作中开发报表的应用场景,自己设计了一套报表对象定义,实现在报表设计器中报表对象的修改,通过序列化成Json对象来达到存储报表对象,相对于FyiReporting报表直接对报表定义的XML操作省去编写大量直接解析XML文档的方法,可能会带来点效率损失。本文主要目的在总结自己在序列化对象的时候对类信息标记常用用法,不在于对FyiReporting做过多探讨。首先自己写的Json序列化操作的类:
class JsonSerialize<T> { /// <summary> /// 序列化 /// </summary> /// <param name="t"></param> public string Serialize( T t) { string jsonStr; using (MemoryStream ms = new MemoryStream()) { DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T)); jsonSerializer.WriteObject(ms,t); jsonStr = Encoding.UTF8.GetString(ms.ToArray()); } return jsonStr; } /// <summary> /// 反序列化 /// </summary> /// <param name="jsonStr"></param> /// <returns></returns> public T DeSerialize(string jsonStr) { if(jsonStr == null) throw new SerializationException("Json串为空"); DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr))) { return (T)jsonSerializer.ReadObject(ms); } } }
对Json的序列化和反序列化,需要添加对using System.Runtime.Serialization程序集的引用。
报表对象的粗略类图展示如下:
报表定义对象包含的主要对象ReportDefine主要组成如图所示,大致反应一个报表对象主要包含的新信息,该对象基本包含类关系的比较复杂关系(多态的序列化标记和数组序列化标记等),对Json序列化具体实现不明白可参看后面附上的Demo.正如前面所说,这篇随笔为方便自己用到Json序列化的时候有忘记的时候,提供自己复习参考,在此也提供给有需要的园友们参考,没有啥高深地方可以学习。在此,附上Demo供大家参考。
下次用时间给大家附上关于FyiReporting的表达式引擎的分析的文章和简单Demo供有兴趣的园友学习学习。
0 0
- 序列化和json
- Json序列化
- JSON序列化类
- 序列化与json
- json的序列化
- C# Json序列化
- 序列化方法json
- IOS JSON 序列化
- Ext json序列化
- C#序列化JSON
- json 格式序列化
- json序列化
- vs2003 序列化json
- Json序列化
- Json序列化
- DataTable序列化Json
- 序列化和json
- Json 序列化
- 第四章5 直接用端口操作键盘
- typedef与指针连用
- 异步编程模式学习
- Finalize/Dispose资源清理模式
- 对进度条的通用封装实现
- Json序列化
- 2014腾讯实习题转。。。。。
- 我的互联网创业公司的第一笔收入磨难记
- 内部排序一
- Android学习笔记-Intent(一)
- Java泛型学习笔记--Java泛型和C#泛型比较学习(一)
- Java多线程学习笔记——从Java JVM对多线程数据同步的一些理解
- Keepalived 设置不抢占资源
- 用图作背景的cell选中时背景图变暗