博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象与字符串相互转换
阅读量:7221 次
发布时间:2019-06-29

本文共 3204 字,大约阅读时间需要 10 分钟。

前段时间用到vs2002开发,很多新技术都用不进去,json没法用,为了实现无刷新保存多条数据(多个对象),前台可以存对象但是无法传到后台,所以采用ajax在后台调用给类SerializeObjectClass.GetString(object _obj)方法把对象转换成字符串后,再返回给前台保存,方便再一次添加数据。点击保存时将该字符串传给后台,后台再次调用该类的SerializeObjectClass.GetObject(string _formatString)方法还原成对象进行保存。

该类代码如下。(作用可以将对象转换成字符串,并可以把字符串还原成对象)

ContractedBlock.gif
ExpandedBlockStart.gif
View Code
using System; using System.Text; using System.Xml; using System.Xml.Serialization; using System.IO; using System.Collections; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; //############################## //Author: LSQ //Date  :20111007 //############################## namespace test {
/// /// Summary description for SerializeObjectClass. /// public class SerializeObjectClass {
public SerializeObjectClass() {
// // TODO: Add constructor logic here // } #region Private Method private static bool CheckBytesIsEqual(byte[] bt1, byte[] bt2) {
bool b = true; for (int i = 0; i < bt1.Length; i++) {
if (bt1[i] != bt2[i]) b = false; } return b; } private static byte[] Serialize(object obj) {
BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, obj); ms.Seek(0, SeekOrigin.Begin); BinaryReader br = new BinaryReader(ms); byte[] bt = br.ReadBytes((int)ms.Length); return bt; } private static object Deserialize(byte[] _bt) {
BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(_bt); object obj = bf.Deserialize(ms); return obj; } private static string GetStringFromBytes(byte[] _bt) {
StringBuilder sb = new StringBuilder(); foreach (byte b in _bt) {
if (b.ToString().Length == 1) sb.Append("00" + b.ToString()); else if (b.ToString().Length == 2) sb.Append("0" + b.ToString()); else if (b.ToString().Length == 3) sb.Append(b.ToString()); } return sb.ToString(); } private static byte[] GetBytesFromString(string _str) {
byte[] _bt = new byte[_str.Length / 3]; string _tmp = ""; int _count = 0; int _index = 0; while (_index < _str.Length / 3) {
_tmp = _str.Substring(_count, 3); _bt[_index] = (byte)(int.Parse(_tmp)); _count += 3; _index += 1; } return _bt; } #endregion #region Public Method public static string GetString(object _obj) {
return SerializeObjectClass.GetStringFromBytes(SerializeObjectClass.Serialize(_obj)); } public static object GetObject(string _formatString) {
return SerializeObjectClass.Deserialize(SerializeObjectClass.GetBytesFromString(_formatString)); } #endregion } //Below class is a test [Serializable] public class TT {
public string aa; public string bb; public string cc; public string get() {
return "123"; } } }

转载于:https://www.cnblogs.com/lsq_NET/archive/2011/10/07/2200622.html

你可能感兴趣的文章
/*10个filter的属性*/ ---毛玻璃效果
查看>>
折半查找习题解答
查看>>
51单片机的P1
查看>>
[32]JSON
查看>>
3689: 异或之
查看>>
字符串模式匹配KMP算法
查看>>
Android Drawable和Bitmap图片之间转换
查看>>
Debian 8 安装 Nvidia 显卡驱动
查看>>
nginx静态文件访问
查看>>
SharePoint 2013中的默认爬网文件扩展名和分析文件类型
查看>>
c#-冒泡排序-算法
查看>>
IP釋放、清除、以及刷新DNS
查看>>
第二次作业
查看>>
小知识
查看>>
安装Vmware时竟然也会报错,错误信息见图
查看>>
20179311《网络攻防实践》第三周作业
查看>>
Ural 1042 Central Heating
查看>>
css兼容问题大全
查看>>
2018-2019-1 20165324《信息安全系统设计基础》实验五
查看>>
使用 Applet 渲染 jzy3d WireSurface 波动率曲面图
查看>>