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 ...
随机推荐
- 【BZOJ3282】Tree LCT
1A爽,感觉又对指针重怀信心了呢= =,模板题,注意单点修改时splay就好,其实按吾本意是没写的也A了,不过应该加上能更好维护平衡性. ..还是得加上好= = #include <iostre ...
- BZOJ1090: [SCOI2003]字符串折叠
区间dp. 一种是分段dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); 一种是这一段可以缩写dp[i][j]=min(dp[i][j],dp[i][l]+2+ca ...
- linux设备驱动
http://blog.csdn.net/bob_fly1984/article/details/8820670 struct ov5640_data { struct ov5640_platf ...
- ext3是对ext2文件系统的一个扩展高性能日志文件系统
嵌入式开发者所做的最重要的决定之一就是部署哪种文件系统.有些文件系统性能比较高有些文件系统空间利用率比较高,还有一些文件系统设备故障或者意外断电后恢复数据比较方便. linux文件系统概念 分区 分区 ...
- Java编程中-servlet
今天将别人的项目导入eclipse之后,出现了“The import javax.servlet cannot be resolved”错误 import javax.servlet.ServletE ...
- Go语言配置与开发环境配置
1.首先下载go的运行时 http://golang.org/dl/ 下载windows 的zip版本,解压到硬盘上的一个位置 2.设置环境变量如下 GOBIN %GOROOT%\bin //go的 ...
- JSON 与 JSONP
JSON (JavaScript Object Notation) is a lightweight data-interchange format. 即 JSON 是一种轻量级的数据交换格式. 1. ...
- 贪吃蛇的java代码分析(一)
自我审视 最近自己学习java已经有了一个多月的时间,从一开始对变量常量的概念一无所知,到现在能勉强写几个小程序玩玩,已经有了长足的进步.今天没有去学习,学校里要进行毕业答辩和拍毕业照了,于是请了几天 ...
- django学习笔记
django笔记----建立疾病预测系统的web应用 @buyizhiyou 工作环境:ubuntu16.04LTS+ ...
- Spark会把数据都载入到内存么
转载自:https://www.iteblog.com/archives/1648 前言: 很多初学者其实对于Spark的编程模式还是RDD这个概念理解不到位,就会产生一些误解.比如,很多时候我们常常 ...