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. chrome控制台调试学习笔记 暂未整理

    15:03 2015/12/7chrome控制台调试学习:推荐博客:http://www.cnblogs.com/Wayou/p/chrome-console-tips-and-tricks.html ...

  2. js性能优化-事件委托

    js性能优化-事件委托 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少 ...

  3. Masonry小结

    一,容易混淆的问题 1.make.left.equal(xxx)的参数若为某个控件,则默认为以该控件的 left 为基准对照. //these two constraints are exactly ...

  4. 微信 winwre 移动调试

    如果 微信服务号无法连接 网络,关闭window 防火墙

  5. [Android]关于Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED ,修改包名

    查了很多,说修改manifest.本来是没有任何的修改,自动生成的,最后发现参考了人家的一篇: http://bbs.csdn.net/topics/390613702 修改包名,包名带了大些的开头了 ...

  6. JAVA 获取网页流

    package com.gethtmlContent; import java.io.BufferedReader; import java.io.InputStreamReader; import ...

  7. jQuery验证控件jquery.validate.js使用说明+中文API

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 学习 ...

  8. Moneybookers API支付方式开发 步骤

    开发文档: 支付说明手册 步骤: 1.使用商家帐号,登录到www.moneybookers.com,核对商家信息是否正确. 2.在账户-->商家工具(设置) a.API/MQI password ...

  9. 使用mutt+msmtp在Linux命令行界面下发邮件(续)

    一年前写过一篇<使用mutt+msmtp在Linux命令行界面下发邮件>,但是最近想照着文中的办法解决新的问题时发现又有新的疑惑了,所以就有了今天这篇“续集”. 首先说说msmtp.如果你 ...

  10. HDU 3572 Task Schedule(拆点+最大流dinic)

    Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...