.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:序列化和反序列化的更多相关文章

  1. C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...

  2. 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  3. Java 序列化与反序列化

    1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...

  4. C#中怎样实现序列化和反序列化

    我们想要将数据进行持久化的操作的话,也就是将数据写入到文件中,我们在C#中可以通过IO流来操作,同时也可以通过序列化来操作,本人是比较推荐使用序列化操作的 因为我们如果想要将一个对象持久化到文件中 如 ...

  5. Java序列化与反序列化

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  6. XPatchLib 对象增量数据序列化及反序列化器 For .Net

    在日常的软件开发和使用过程中,我们发现同一套系统的同一配置项在不同的客户环境中是存在各种各样的差异的.在差异较为分散时,如何较好的管理这些差异,使得维护过程能够更加安全和快速,一直在这样那样的困扰着开 ...

  7. c# Json 自定义类作为字典键时,序列化和反序列化的处理方法

    一般情况下,Newtonsoft.Json.dll 对 Dictionary<int,object>.Dictionary<string,object>等序列化与反序列化都是成 ...

  8. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  9. 序列化,反序列化和transient关键字

    一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...

  10. C#对象序列化与反序列化zz

      C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...

随机推荐

  1. css透明度的兼容!!!

    以前总是写透明度的代码,今天弄了个弹出框要求就边框透明,于是有了下边的结论,虽然很多东西不合理了,日后找到更合理在做更新!!! html <div class="new_playerf ...

  2. 困扰我多年的Connection reset问题

    第一次出现:是thrift的python client去请求server,发现偶尔出现这个问题 第二次:接入第三方的api,去请求数据时,发现一个接入方的api第一次总是报这个错,当时又没有做处理,导 ...

  3. F2工作流引擎模型

    工作流引擎(Workflow Engine ) [编辑] 工作流引擎概述 工作流引擎是指workflow(工作流)作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色.分工和条件的不同决定 ...

  4. IEnumerable接口的Aggregate方法

    以前小猪为了累加一个集合中的类容通常会写出类似这样的C#代码: string result ="": foreach (var item in items) { result+=i ...

  5. iOS开发UI篇—无限轮播(功能完善)

    iOS开发UI篇—无限轮播(功能完善) 一.自动滚动 添加并设置一个定时器,每个2.0秒,就跳转到下一条. 获取当前正在展示的位置. [self addNSTimer]; } -(void)addNS ...

  6. Top Five Hacker Tools Every CISO Should Understand

    As the role of the CISO continues to evolve within organizations towards that of an executive level ...

  7. iOS打开百度地图、高德地图导航

    1.判断手机里是否已经安装了百度地图或者高德地图: BOOL hasBaiduMap = NO; BOOL hasGaodeMap = NO; if ([[UIApplication sharedAp ...

  8. ubuntu 配置JDK环境

    /etc/profile中加入以下代码 JAVA_HOME为JDK包解压的路径export JAVA_HOME=/home/exayong/jvm/jdk1.8.0_111 export JRE_HO ...

  9. matlab 非平稳变化时域分析

    对于非平稳信号,由于傅立叶变换核心函数-正弦函数具有无限性,因此选用短时窗来分析局域信号: 需要注意的时,选取完滑动的时间窗一般是中心对称而且为奇数,这时被分析的时间点正好是滑动窗的中点. 因此,时域 ...

  10. Windows CMD下一些有用的命令

    2014.06.27 C:\Users\wsc>route print ============================================================= ...