.NET:序列化和反序列化
.NET:序列化和反序列化
需要反序列化的字符串:
{
"LouPanID": "sample string 1",
"LouPanHao": "sample string 2",
"ChengShi": "sample string 3",
"LouPanMing": "sample string 4",
"LianXiRenMing": "sample string 5",
"LianXiRenDianHua": "sample string 6",
"ShouLouDiZhi": "sample string 7",
"WuYeLeiXing": "sample string 8",
"WuYeDiZhi": "sample string 9",
"ShiFouDaiLi": "sample string 10",
"DaiLiGongSi": "sample string 11",
"ShiFouYouYuShou": "sample string 12",
"ShiFouMianLiuShui": "sample string 13",
"YuShouZhengHao": "sample string 14",
"SuoShuQuYu": "sample string 15"
}
类结构:
public class BuildingInfo
{
public string LouPanID { get; set; }
public string LouPanHao { get; set; }
public string ChengShi { get; set; }
public string LouPanMing { get; set; }
public string LianXiRenMing { get; set; }
public string LianXiRenDianHua { get; set; }
public string ShouLouDiZhi { get; set; }
public string WuYeLeiXing { get; set; }
public string WuYeDiZhi { get; set; }
public string ShiFouDaiLi { get; set; }
public string DaiLiGongSi { get; set; }
public string ShiFouYouYuShou { get; set; }
public string ShiFouMianLiuShui { get; set; }
public string YuShouZhengHao { get; set; }
public string SuoShuQuYu { get; set; }
}
使用System.Runtime.Serialization.Json.DataContractJsonSerializer序列化/反序列化
class Program
{
static void Main(string[] args)
{
//反序列化
string jsonBody = @"{
""LouPanID"": ""sample string 1"",
""LouPanHao"": ""sample string 2"",
""ChengShi"": ""sample string 3"",
""LouPanMing"": ""sample string 4"",
""LianXiRenMing"": ""sample string 5"",
""LianXiRenDianHua"": ""sample string 6"",
""ShouLouDiZhi"": ""sample string 7"",
""WuYeLeiXing"": ""sample string 8"",
""WuYeDiZhi"": ""sample string 9"",
""ShiFouDaiLi"": ""sample string 10"",
""DaiLiGongSi"": ""sample string 11"",
""ShiFouYouYuShou"": ""sample string 12"",
""ShiFouMianLiuShui"": ""sample string 13"",
""YuShouZhengHao"": ""sample string 14"",
""SuoShuQuYu"": ""sample string 15""
}";
BuildingInfo bi = new BuildingInfo();
DataContractJsonSerializer JsonSerializer = new DataContractJsonSerializer(typeof(BuildingInfo));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonBody));
bi = (BuildingInfo)JsonSerializer.ReadObject(ms);
//序列化
DataContractJsonSerializer _jsonSerializer = new DataContractJsonSerializer(typeof(BuildingInfo));
MemoryStream _ms = new MemoryStream();
_jsonSerializer.WriteObject(_ms, bi);
string _jsonBody = Encoding.UTF8.GetString(_ms.ToArray());
_ms.Close();
}
} [DataContract]
class BuildingInfo
{
[DataMember]
public string LouPanID { get; set; }
[DataMember]
public string LouPanHao { get; set; }
[DataMember]
public string ChengShi { get; set; }
[DataMember]
public string LouPanMing { get; set; }
[DataMember]
public string LianXiRenMing { get; set; }
[DataMember]
public string LianXiRenDianHua { get; set; }
[DataMember]
public string ShouLouDiZhi { get; set; }
[DataMember]
public string WuYeLeiXing { get; set; }
[DataMember]
public string WuYeDiZhi { get; set; }
[DataMember]
public string ShiFouDaiLi { get; set; }
[DataMember]
public string DaiLiGongSi { get; set; }
[DataMember]
public string ShiFouYouYuShou { get; set; }
[DataMember]
public string ShiFouMianLiuShui { get; set; }
[DataMember]
public string YuShouZhengHao { get; set; }
[DataMember]
public string SuoShuQuYu { get; set; }
}
如果序列化和反序列化的是一个集合,将bi的类型改为List<BuildingInfo>接口
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text; namespace Topsur.Test.Serialize
{
class Program
{
static void Main(string[] args)
{
//反序列化
#region jsonBody
string jsonBody = @"[
{
""LouPanID"": ""1"",
""LouPanHao"": ""sample string 2"",
""ChengShi"": ""sample string 3"",
""LouPanMing"": ""sample string 4"",
""LianXiRenMing"": ""sample string 5"",
""LianXiRenDianHua"": ""sample string 6"",
""ShouLouDiZhi"": ""sample string 7"",
""WuYeLeiXing"": ""sample string 8"",
""WuYeDiZhi"": ""sample string 9"",
""ShiFouDaiLi"": ""sample string 10"",
""DaiLiGongSi"": ""sample string 11"",
""ShiFouYouYuShou"": ""sample string 12"",
""ShiFouMianLiuShui"": ""sample string 13"",
""YuShouZhengHao"": ""sample string 14"",
""SuoShuQuYu"": ""sample string 15""
},
{
""LouPanID"": ""2"",
""LouPanHao"": ""sample string 2"",
""ChengShi"": ""sample string 3"",
""LouPanMing"": ""sample string 4"",
""LianXiRenMing"": ""sample string 5"",
""LianXiRenDianHua"": ""sample string 6"",
""ShouLouDiZhi"": ""sample string 7"",
""WuYeLeiXing"": ""sample string 8"",
""WuYeDiZhi"": ""sample string 9"",
""ShiFouDaiLi"": ""sample string 10"",
""DaiLiGongSi"": ""sample string 11"",
""ShiFouYouYuShou"": ""sample string 12"",
""ShiFouMianLiuShui"": ""sample string 13"",
""YuShouZhengHao"": ""sample string 14"",
""SuoShuQuYu"": ""sample string 15""
},
{
""LouPanID"": ""3"",
""LouPanHao"": ""sample string 2"",
""ChengShi"": ""sample string 3"",
""LouPanMing"": ""sample string 4"",
""LianXiRenMing"": ""sample string 5"",
""LianXiRenDianHua"": ""sample string 6"",
""ShouLouDiZhi"": ""sample string 7"",
""WuYeLeiXing"": ""sample string 8"",
""WuYeDiZhi"": ""sample string 9"",
""ShiFouDaiLi"": ""sample string 10"",
""DaiLiGongSi"": ""sample string 11"",
""ShiFouYouYuShou"": ""sample string 12"",
""ShiFouMianLiuShui"": ""sample string 13"",
""YuShouZhengHao"": ""sample string 14"",
""SuoShuQuYu"": ""sample string 15""
}
]";
#endregion List<BuildingInfo> bi = new List<BuildingInfo>();
DataContractJsonSerializer JsonSerializer = new DataContractJsonSerializer(typeof(List<BuildingInfo>));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonBody));
bi = (List<BuildingInfo>)JsonSerializer.ReadObject(ms);
//序列化
DataContractJsonSerializer _jsonSerializer = new DataContractJsonSerializer(typeof(List<BuildingInfo>));
MemoryStream _ms = new MemoryStream();
_jsonSerializer.WriteObject(_ms, bi);
string _jsonBody = Encoding.UTF8.GetString(_ms.ToArray());
_ms.Close(); }
} [DataContract]
class BuildingInfo
{
[DataMember]
public string LouPanID { get; set; }
[DataMember]
public string LouPanHao { get; set; }
[DataMember]
public string ChengShi { get; set; }
[DataMember]
public string LouPanMing { get; set; }
[DataMember]
public string LianXiRenMing { get; set; }
[DataMember]
public string LianXiRenDianHua { get; set; }
[DataMember]
public string ShouLouDiZhi { get; set; }
[DataMember]
public string WuYeLeiXing { get; set; }
[DataMember]
public string WuYeDiZhi { get; set; }
[DataMember]
public string ShiFouDaiLi { get; set; }
[DataMember]
public string DaiLiGongSi { get; set; }
[DataMember]
public string ShiFouYouYuShou { get; set; }
[DataMember]
public string ShiFouMianLiuShui { get; set; }
[DataMember]
public string YuShouZhengHao { get; set; }
[DataMember]
public string SuoShuQuYu { get; set; }
} }
可以封装成类
public class JsonSerializeHelper
{
public static string Serialize<T>(T t)
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
jsonSerializer.WriteObject(ms, t);
string jsonResult = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonResult;
} public static T Deserialize<T>(string jsonBody)
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonBody));
T objResult=(T)jsonSerializer.ReadObject(ms);
ms.Close();
return objResult;
}
}
.NET:序列化和反序列化的更多相关文章
- C# 序列化与反序列化几种格式的转换
这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...
- Java 序列化与反序列化
1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...
- C#中怎样实现序列化和反序列化
我们想要将数据进行持久化的操作的话,也就是将数据写入到文件中,我们在C#中可以通过IO流来操作,同时也可以通过序列化来操作,本人是比较推荐使用序列化操作的 因为我们如果想要将一个对象持久化到文件中 如 ...
- Java序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- XPatchLib 对象增量数据序列化及反序列化器 For .Net
在日常的软件开发和使用过程中,我们发现同一套系统的同一配置项在不同的客户环境中是存在各种各样的差异的.在差异较为分散时,如何较好的管理这些差异,使得维护过程能够更加安全和快速,一直在这样那样的困扰着开 ...
- c# Json 自定义类作为字典键时,序列化和反序列化的处理方法
一般情况下,Newtonsoft.Json.dll 对 Dictionary<int,object>.Dictionary<string,object>等序列化与反序列化都是成 ...
- java 对象序列化与反序列化
Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为 ...
- 序列化,反序列化和transient关键字
一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...
- C#对象序列化与反序列化zz
C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...
随机推荐
- iOS基础篇(十七)——UIGestureRecognizer用法
UIGestureRecognizer(手势识别)在iOS 中非常重要,他极大地提高了移动设备的使用便捷性: 在3.2之前是主要使用的是由UIResponder而来的如下4种方式: - (void)t ...
- Ubuntu 下载 & 编译 Android5.1 源码
ustc & tsinghua android srchttps://lug.ustc.edu.cn/wiki/mirrors/help/aosphttps://mirrors.tuna.ts ...
- linux应用开发小结
这几天一直在看<在实践中学嵌入式linux应用程序开发>这本书,昨天下午的时候算是把这本书完全搞懂了.除了第一章的交叉编译环境的搭建和第七章linux设备驱动开发第八章的安卓应用开发和第九 ...
- 安装EditPlus
生成注册码:http://www.jb51.net/tools/editplus/ 862C2-DABE8-E30AA-CCE33-65E69
- Servlet路径跳转1---使用相对路径和绝对路径,在页面上调用servlet的路径写法(超链接的方式和表单的方式)
课程1-13 http://www.imooc.com/video/5554 Servlet路径跳转: 绝对路径:放在任何地方都对的路径 相对路径:相对于当前资源的路径 index文件 加上/,表 ...
- Qt之WebKit学习之绘图
void Serial::on_pushButton_clicked() { //scroll(4,0); flag_btn = true; // this->update(); //绘图绘在窗 ...
- win7下用python3.3抓取网上图片并下载到本地
这篇文章是看了网上有人写了之后,才去试试看的,但是因为我用的是python3.3,与python2.x有些不同,所以就写了下来,以供参考. get_webJpg.py #coding=utf-8 im ...
- iOS ShareSDK 使用
流量精灵软件中,也在大部分地方使用到了shareSDK 这个三方开源库.具体的有两种需求 a.弹出所有分享模块 b.只弹出指定的平台:如微信朋友圈和QQ . 配置方法,三方库中也很详细,这里我只有写出 ...
- C# WinForm控件之Dock顺序调整
最近被.net winform中的控件布局搞困惑了,由于控件都是使用Dock方式的,操作起来也是比较方便,如果最大化,窗口大小调整等,都可以随着窗口大小的变化而变化. 但问题是,.net winfor ...
- Day9 summary
昨天又翻出收藏夹里一个叫“谷子粒”的bloghttp://1.guzili.sinaapp.com/?p=128#more-128,链接是博主整理的机器学习方面的热点微博,相当的干货.要说我是从知乎对 ...