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 ...
随机推荐
- Java 常用方法
java 图片上传from表单必加属性:enctype="multipart/form-data" 1.获取字符串的长度 : length() 2 .判断字符串的前缀或后缀与已知字 ...
- XVI Open Cup named after E.V. Pankratiev. GP of Eurasia
A. Nanoassembly 首先用叉积判断是否在指定向量右侧,然后解出法线与给定直线的交点,再关于交点对称即可. #include<bits/stdc++.h> using names ...
- 李洪强iOS经典面试题141-报错警告调试
李洪强iOS经典面试题141-报错警告调试 报错警告调试 你在实际开发中,有哪些手机架构与性能调试经验 刚接手公司的旧项目时,模块特别多,而且几乎所有的代码都写在控制器里面,比如UI控件代码.网络 ...
- python endswith和startwith
转载:http://blog.sina.com.cn/s/blog_5dd2af0901012rmn.html 做文本处理的时候经常要判断一个文本有没有以一个子串开始,或者结束.Python为此提供了 ...
- Swift与OC混编
OC调用Swift的方法:添加 import "xxxx-Swift.h" 头文件即可 Swift调用OC的方法:需要建立桥接: xxxx-Bridging-Header.h 头文 ...
- JQuery 实现锚点链接之间的平滑滚动
24. 解决链接锚点的生硬问题 $('.nav .btn[href*=#],.icon2,.icon3').click(function() { if (location.pathname.repla ...
- poj1323-Game Prediction(贪心思想)
贪心的思想:尽量的从最大值找起.然后在剩余之中,再从最大值找起. 一,题意: M个人,每人N张牌,每轮比较谁出的牌大,最大者为胜.现在给定M和N,以及你的牌,要求输出你至少能确保获得几轮的胜利 从&q ...
- javascript:算法之for循环
一.for中的表达式 ①短路表达式 a && b是表达式:当执行的时候如果表达式a结果不是0,就会执行表达式b.如果表达式a执行的结果是0,表达式b不执行 ②i++与++i的不同 ++ ...
- mockito使用心得
前提:pom引用<dependency> <groupId>junit</groupId> <artifactId>junit</artifact ...
- rabbitmq使用心得
因为公司项目需要使用消息中间件,实现相关业务的异步处理,所有选用了rabbitmq.通过看文档,爬过一个一个坑,终于还是实现了相关功能. 直接上配置文件: <?xml version=" ...