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 ...
随机推荐
- 2016-2017 ACM-ICPC, NEERC, Moscow Subregional Contest
A. Altitude 从小到大加入每个数,用set查找前驱和后继即可. 时间复杂度$O(n\log n)$. #include <bits/stdc++.h> using namespa ...
- Gollum 安装笔记
环境Ubuntu server 14.04 sudo apt-get install ruby1.9.1 ruby1.9.1-dev make zlib1g-dev libicu-dev build- ...
- [NOIP2011]聪明的质监员 题解
题目大意: 额--貌似蛮清晰的,就不赘述了. 思路: 首先不难发现M越大Y越小,因此可以二分答案(方向不要弄错),二分出最小的不小于S的Y即可.而计算Y时可用前缀和O(n+m)求得.两种边界情况也要考 ...
- 【JAVA】Calendar
Calendar是JDK 1.1增加的类 最近使用了下Calendar发现几个很让人抓狂的问题 源码: public final static int SUNDAY = 1; public final ...
- 【Leetcode】Longest Palindromic Substring
问题:https://leetcode.com/problems/longest-palindromic-substring/ 给定一个字符串 S,求出 S 的最长回文子串 思路: 1. 回文:一个字 ...
- 【noip 2016】 组合数问题(problem)
杨辉三角形求组合数问题 原题点这里 #include <iostream> #include <cmath> using namespace std; long long a[ ...
- &与&&,|与||
http://bokeid.blog.163.com/blog/static/93102786201181710259178/ &&:逻辑运算符,连接两个或多个表达式,结果为TRUE或 ...
- noip200802排座椅
排座椅 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的 ...
- 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏
最近互联网招聘平台拉勾网在五一期间推出个“最难面试的IT公司”代码挑战活动,评选出了5个最难面试的IT公司,即:ThoughtWorks.Google.Unisys.Rackspace.Cypress ...
- IOS网络第二天 - 04-黑酷-GDataXML 解析
****** - (void)viewDidLoad { [super viewDidLoad]; /** 加载服务器最新的视频信息 */ // 1.创建URL NSURL *url = HMUrl( ...