JSON/XML序列化与反序列化(非构造自定义类)
隔了很长时间再重看自己的代码,觉得好陌生。。以后要养成多注释的好习惯。。直接贴代码。。对不起( ▼-▼ )
保存保存:进行序列化后存入应用设置里
ApplicationDataContainer _appSettings = ApplicationData.Current.LocalSettings; //这个是保存一些页面输入信息
private async void Save_Click(object sender, RoutedEventArgs e)
{
if (userName.Text == "" || userAge.Text == "")
{
await new MessageDialog("请输入完整的信息").ShowAsync();
return;
}
ObservableCollection<School> education = new ObservableCollection<School>();
if (school1.IsChecked == true)
education.Add(new School() { Id = "id001", Name = school1.Content.ToString() });
if (school2.IsChecked == true)
{
education.Add(new School() { Id = "id002", Name = school2.Content.ToString() });
}
User user = new User()
{
Education = education,
Id = Guid.NewGuid().ToString(),//随机生成 前面用到过的
Name = userName.Text,
Age = Int32.Parse(userAge.Text),
Verified = false
}; //使用DataContractJsonDeSeriaLizer实现方式
string json = ToJsonData(user); //带参数的构造函数 //string json = user.Stringify();//这个是构造自定义的类的,此处用不到 info.Text = json;
_appSettings.Values["UserDataKey"] = json; //存放到应用设置里面
await new MessageDialog("保存成功").ShowAsync();
}
获取数据:从应用设置取出,进行反序列化取出信息
private async void Get_Click(object sender, RoutedEventArgs e)
{
if (!_appSettings.Values.ContainsKey("UserDataKey"))
{
await new MessageDialog("未保存信息").ShowAsync();
return;
}
string json = _appSettings.Values[“UserDataKey”].ToString(); //反序列化为实体类对象
User user = DataContractJsonSerializer<User>(json); //User user = new User(json);
string userInfo = "";
userInfo = "Id:" + user.Id + "Name:" + user.Name + "Age:" + user.Age;
foreach (School school in user.Education)
{
userInfo += "Education:" + "Id:" + school.Id + "name:" + school.Name;
}
await new MessageDialog(userInfo).ShowAsync();
} private T DataContractJsonSerializer<T>(string jsonString)
{
var ds = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ds.ReadObject(ms);
ms.Dispose();
return obj;
}
不贴了。。看的好难受。。以后再也不会这么敷衍了。大家多看看其他的也行。
收获:
ObservableCollection<>相对List<>来说,绑定到ListBox会自动刷新
也就是当你在进行增加、删除操作时,前台会动态的显示。
有需要源码(WP8.1)的可以下载。包含了JSON/Xml的两种(构造与不构造类)操作方式。。
http://files.cnblogs.com/yffswyf/JSONAndXML.rar
JSON/XML序列化与反序列化(非构造自定义类)的更多相关文章
- Json/XML序列化和反序列化
1.json序列化和反序列化 序列化是将对象状态转换为可保持或传输的格式的过程; 反序列化,它将流转换为对象; 1)Json.Net 推荐使用Json.Net类库,需要引入的命名空间; 序列化:Jso ...
- XML 序列化与反序列化
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
- Rest中的XML与JSON的序列化与反序列化
#region 获取XML的序列化和反序列化 /// <summary> /// 对象进行序列化生成XML /// </summary> /// <typeparam n ...
- Newtonsoft.Json 的序列化与反序列化
首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一 ...
- 【转】Newtonsoft.Json 的序列化与反序列化
http://www.cnblogs.com/08shiyan/p/3464028.html 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Fr ...
- Json.Net序列化和反序列化设置
首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一 ...
- Json.Net系列教程 3.Json.Net序列化和反序列化设置
原文 Json.Net系列教程 3.Json.Net序列化和反序列化设置 上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framewo ...
- .NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)
序列化和反序列化是指什么? 序列化(seriallization): 将对象转化为便于传输的数据格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串.反序列化(deserial ...
- [.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化
[.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化 本节导读: 介绍JSON的结构,在JS中的使用.重点说明JSON如何在.N ...
随机推荐
- Java Attach API
catalog . instrucment与Attach API . BTrace: VM Attach的两种方式 . Sun JVM Attach API 1. instrucment与Attach ...
- Unity赛车游戏之移动
这个赛车游戏真是让我费劲脑汁啊.尤其是写这种系统化的东西. 目前漂移还没找到更好的算法,不过基本的移动还是可以做到的. 别看就光是个移动,其实也是很费事的. Unity给了个对于赛车系统很好的碰撞组件 ...
- 基本概率分布Basic Concept of Probability Distributions 7: Uniform Distribution
PDF version PDF & CDF The probability density function of the uniform distribution is $$f(x; \al ...
- HDU 5761 Rower Bo
传送门 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Special Jud ...
- Loadrunner关联取参及设置检查点
Loadrunner关联取参及设置检查点: 获取post的响应值当作参数存储,要在此post请求之上添加 web_reg_save_param("sign", "LB=m ...
- 解决Cookie乱码问题
写了一个cookie的定义和获取,结果我输入中文后,页面报错 报错信息如下: type Exception report message An exception occurred processin ...
- java字符串拼接与性能
使用 Concatenation Operator (+) String concat method – concat(String str) StringBuffer append method – ...
- python列表、元组、字典(四)
列表 如:[11,22,33,44,44].['TangXiaoyue', 'bruce tang'] 每个列表都具备如下功能: class list(object): ""&qu ...
- 和redis谈一场恋爱(第二天约会了解彼此)
最近使用了Memcache,带来的便利已经让我欣喜若狂.开启了另一种又快又好的方式存储和读取数据.中间经过了一番折腾,学习了mysql,终于有学到了redis. Redis的全名是Remote Dic ...
- 十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))
十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less)) 注:本文为翻译文章,因翻译水平有限,难免有缺漏不足之处,可查看原文. 我们知道写css代码是非常枯燥的 ...