Windows Phone 六、JSON序列化
JSON序列化
- public class Person
- {
- public int Id { get; set; }
- public string Name { get; set; }
- public int Age { get; set; }
- public int Gender { get; set; }
- }
Person
- Person zhang = new Person();
- zhang.Id = ;
- zhang.Name = "letter zhang";
- zhang.Age = ;
- zhang.Gender = 1;
- //序列化工具
- DataContractJsonSerializer serializer = new DataContractJsonSerializer(zhang.GetType());
- //准备一个流对象作为JSON载体
- using (var memory = new MemoryStream())
- {
- //序列化一个对象到一个流当中
- serializer.WriteObject(memory, zhang);
- //让流中指针的位置放到第一位
- memory.Position = ;
- //读取数据流中的数据
- using (var reader = new StreamReader(memory))
- {
- var result = await reader.ReadToEndAsync();
- System.Diagnostics.Debug.WriteLine(result);
- }
- }
JSON反序列化
- Person zhang = new Person();
- zhang.Id = ;
- zhang.Name = "letter zhang";
- zhang.Age = ;
- zhang.Gender = '男';
- //序列化工具
- DataContractJsonSerializer serializer = new DataContractJsonSerializer(zhang.GetType());
- //定义JSON结果String
- string json;
- //准备一个流对象作为JSON载体
- using (var memory = new MemoryStream())
- {
- //序列化一个对象到一个流当中
- serializer.WriteObject(memory, zhang);
- //让流中指针的位置放到第一位
- memory.Position = ;
- //读取数据流中的数据
- using (var reader = new StreamReader(memory))
- {
- json = await reader.ReadToEndAsync();
- }
- }
- //反序列化工具
- DataContractJsonSerializer serializer2 = new DataContractJsonSerializer(typeof(Person));
- var buffer = Encoding.UTF8.GetBytes(json);
- //根据字节数组创建一个流
- using (var stream = new MemoryStream(buffer))
- {
- //读取流对象中的Person对象
- var p2 = serializer2.ReadObject(stream) as Person;
- if (p2 != null)
- {
- System.Diagnostics.Debug.WriteLine(p2.Name);
- }
- }
JsonHelper封装
- public static class JsonHelper
- {
- //序列化方法
- public async static Task<string> Serialization(object obj)
- {
- DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
- //准备一个流对象作为JSON载体
- using (var memory = new MemoryStream())
- {
- //序列化一个对象到一个流中
- serializer.WriteObject(memory, obj);
- //让流中指针的位置放到第一位
- memory.Position = ;
- //读取数据流中的数据
- using (var reader = new StreamReader(memory))
- {
- string json = await reader.ReadToEndAsync();
- return json;
- }
- }
- }
- //反序列化方法
- public static object Deserialization(string json, Type resultType)
- {
- DataContractJsonSerializer serializer2 = new DataContractJsonSerializer(resultType);
- var buffer = Encoding.UTF8.GetBytes(json);
- //根据字节数组创建一个流
- using (var stream = new MemoryStream(buffer))
- {
- //读取流对象中的Person对象
- var p2 = serializer2.ReadObject(stream);
- return p2;
- }
- }
- //泛型反序列化
- public static TResult Deserialization<TResult>(string json) where TResult : class
- {
- DataContractJsonSerializer serializer2 = new DataContractJsonSerializer(typeof(TResult));
- var buffer = Encoding.UTF8.GetBytes(json);
- //根据字节数组创建一个流
- using (var stream = new MemoryStream(buffer))
- {
- //读取流对象中的Person对象
- var p2 = serializer2.ReadObject(stream) as TResult;
- return p2;
- }
- }
- //重载泛型方法调用非泛型
- public static TResult Deserialization<TResult>(string json) where TResult : class
- {
- return Deserialization(json, typeof(TResult)) as TResult;
- }
- }
JsonHelper
Windows Phone 六、JSON序列化的更多相关文章
- windows phone8.1:Xml,Json序列化和反序列化
原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...
- wp8.1 Study11:APP里文件读写和使用XML和Json序列化
一.文件读写 1.基本操作(使用FileIO API) 这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下: private async void writeTextToLocalStor ...
- JAVA与C#关于JSON序列化的比较
JAVA CODE: import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java. ...
- C#JSON序列化与反序列化
原文:C#JSON序列化与反序列化 windows phone学习也有一段时间了,想要做一个新闻客户端练练手,于是就在网上找看有没有接口之类.在天狗播客找到了热点热词新闻资讯API开放接口,接口提供的 ...
- Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用
手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...
- java对象json序列化时忽略值为null的属性
环境: jdk: openjdk11 操作系统: windows 10教育版1903 目的: 如题,当一个对象里有些属性值为null 的不想参与json序列化时,可以添加如下注解 import com ...
- day15-Python运维开发基础(json序列化模块、random / time / zipfile / OS模块函数)
1. json序列化模块 # ### json """ 所有编程语言都能够识别的数据格式叫做json,是字符串 json: 将数据类型序列化成字符串 pickle:将数据 ...
- .Net深入实战系列—JSON序列化那点事儿
序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer ...
- Newtonsoft.Json 序列化和反序列化 时间格式【转】
1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg: A a=new A(); a.Name="Elain ...
随机推荐
- 从零开始山寨Caffe·叁:全局线程管理器
你需要一个管家,随手召唤的那种,想吃啥就吃啥. ——设计一个全局线程管理器 一个机器学习系统,需要管理一些公共的配置信息,如何存储这些配置信息,是一个难题. 设计模式 MVC框架 在传统的MVC编程框 ...
- Python for Infomatics 第12章 网络编程六(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.9 词汇表 Beautif ...
- CSS的Hack技术
主要是用来解决兼容性的特殊方法: IE都能识别*;标准浏览器(如FF)不能识别*: IE6能识别*,但不能识别 !important, IE7能识别*,也能识别!important,还有# FF不能识 ...
- .NET 二维码生成(ThoughtWorks.QRCode)
引用ThoughtWorks.QRCode.dll (源代码里有) 1.简单二维码生成及解码代码: //生成二维码方法一 private void CreateCode_Simple(string n ...
- python与正则表达式
匹配一个字符: . 任意非\n字符 [...] \d \D digit \s \S space \w \W word 匹配前一个字符的多个: * 0->> + 1->> ? 0 ...
- memcache 笔记
在windows下安装memecache,进入到安装目录,执行帮助命令可以查看到相关帮助 启动memcache,相关命令如上,比如-p就是端口号,memcache默认端口号是11211 语法:增加ad ...
- WPF整理--动态绑定到Logical Resource
“What happens if we replace aspecific resource? Would that be reflected in all objects using the res ...
- Windows7 IE11 F12控制台DOC资源管理器报错的问题解决方法
------------------ Diagnostic: Exception in window.onload: Error: An error has ocurredJSPlugin.3005 ...
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别 有点像static 和 self的意思 !
PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP ...
- 解决Win10图片打开方式没有“Windows照片查看器”问题
1.打开注册表编辑器(Win+R,Regedit),定位至(建议修改前备份注册表): HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewe ...