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

  1. windows phone8.1:Xml,Json序列化和反序列化

    原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...

  2. wp8.1 Study11:APP里文件读写和使用XML和Json序列化

    一.文件读写 1.基本操作(使用FileIO API) 这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下: private async void writeTextToLocalStor ...

  3. JAVA与C#关于JSON序列化的比较

    JAVA CODE: import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java. ...

  4. C#JSON序列化与反序列化

    原文:C#JSON序列化与反序列化 windows phone学习也有一段时间了,想要做一个新闻客户端练练手,于是就在网上找看有没有接口之类.在天狗播客找到了热点热词新闻资讯API开放接口,接口提供的 ...

  5. Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  6. java对象json序列化时忽略值为null的属性

    环境: jdk: openjdk11 操作系统: windows 10教育版1903 目的: 如题,当一个对象里有些属性值为null 的不想参与json序列化时,可以添加如下注解 import com ...

  7. day15-Python运维开发基础(json序列化模块、random / time / zipfile / OS模块函数)

    1. json序列化模块 # ### json """ 所有编程语言都能够识别的数据格式叫做json,是字符串 json: 将数据类型序列化成字符串 pickle:将数据 ...

  8. .Net深入实战系列—JSON序列化那点事儿

    序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer ...

  9. Newtonsoft.Json 序列化和反序列化 时间格式【转】

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

随机推荐

  1. Websocket简单例子

    websocket是Html5的一个协议,也就是说距离我们2016年就几年时间,其他原理我就不说了,直接讲例子 一.准备材料:1.一个开发工具必须支持javaEE7的,原因是javaEE6或以下不支持 ...

  2. 洛谷 P2725 邮票 Stamps Label:DP

    题目背景 给一组 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K —— 表示信封上能够贴 K 张邮票.计算从 1 到 M 的最大连续可贴出的邮资. 题目描述 例如,假设有 1 分和 3 ...

  3. NOIP2014 uoj20解方程 数论(同余)

    又是数论题 Q&A Q:你TM做数论上瘾了吗 A:没办法我数论太差了,得多练(shui)啊 题意 题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, ...

  4. 利用win7usb-dvdtool工具u盘安装win7

    首先介绍下背景:我的电脑是两块盘,然后系统是ubuntu,但是因为最近觉得linux不怎么用了,所以想装回windows,这个过程遇到好多麻烦,主要是两方面的 1.不识别u盘做的启动盘2.两块硬盘导致 ...

  5. Bootstrap个人总结

    Bootstrap框架 1.以栅栏式布局,分12列,16列,24列和32列,常用12列. 2.整个页面必须在container容器内部 3.移动端以 <meta name="viewp ...

  6. 第八周PSP

    团队项目PSP 一:表格     C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论用户界面 8:40 11:40 35 60 70 分析与 ...

  7. source insight使用

    左键选中后 ctrl+ 跳转到定义 alt+,返回到调用者的程序

  8. antlr.collections.AST.getLine()I异常

        antlr.collections.AST.getLine()I异常 Struts+hibernate+spring项目经常遇到问题 因为Struts自带的antlr-2.7.2.jar,比H ...

  9. Vim,极简使用教程,让你瞬间脱离键鼠切换的痛苦

    注:看大家对Vim仇恨极大,其实它只是一种文本操作方式,可以减少键鼠的切换,从而让编辑文本的操作更迅捷.并不等同于IDE,在我看来,它们是两个是包含关系,IDE可以有Vim编辑模式.Vim或许可以通过 ...

  10. scala中的集合框架