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

本文共 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

你可能感兴趣的文章
微服务的4个设计原则和19个解决方案
查看>>
函数运行环境系统动态链接库版本太低?函数计算 fun 神助力分忧解难
查看>>
前端调用 GraphQL API,从未如此方便!
查看>>
PHP之mb_substr使用
查看>>
PHP之mb_strpos使用
查看>>
浅析字符编码
查看>>
浅析MVC、MVP、MVVM 三种开发模式以及Vue双向数据绑定原理
查看>>
Angular中使用better-scroll
查看>>
前端日报暂停更新公告
查看>>
Base64原理解析
查看>>
更轻松的使用GraphQL
查看>>
http-proxy-middleware 服务代理
查看>>
打造基于 Centos 7.X 的 VBox 服务器
查看>>
Java获取项目中路径方法
查看>>
Clustering by fast search and find of density peaks
查看>>
【七夕福利】k均值聚类算法告诉你到哪里找对象
查看>>
Java之POI的excel导入导出
查看>>
全球首次拍卖AI画作,引发一场赝品泛滥与真伪鉴别的讨论
查看>>
【AI碾压金融成薪资最高行业】35位数据科学家透露秘诀:做好PPT!
查看>>
Scrapy笔框架--通用爬虫Broad Crawls(中)
查看>>