Metro应用Json数据处理
Windows Phone 8 或者 Windows 8 平台对JSON数据的处理方式基本是一致的,需要使用DataContractJsonSerializer类将对象的实例序列化为JSON字符串,并将字符串反序列化为对象的实例,需要注意的此种处理方式要求Json数据的格式固定的。
Json字符串 => 对象
针对以下Json字符串进行数据对象的构造解析
{
"name": "ZhangHui",
"sex": "男",
"cnblogs": {
"address": "http://www.cnblogs.com/huizhang212/",
"age": 2,
"nickname": "宇之乐"
},
"contacts": [
{
"type": "QQ",
"number": "411300114"
},
{
"type": "Email",
"number": "huizhang212@163.com"
}
]
}
1.构造对象
分析上面json数据的格式,可以发现其中包含子对象cnblogs和子对象数组contacts,所以需要构造两个子对象Cnblogs和Contact,对象代码如下:
/// <summary>
/// 人员博客园论坛信息
/// </summary>
[DataContract]
public class Cnblogs
{
[DataMember]
public String nickname { get; set; }
[DataMember]
public int age { get; set; }
[DataMember]
public String address { get; set; }
} /// <summary>
/// 人员电话号码信息对象
/// </summary>
[DataContract]
public class Contact
{
[DataMember]
public String type { get; set; }
[DataMember]
public String number { get; set; }
}
子对象构建完成后,构建json数据对应的对象,记为:Person,代码如下:
/// <summary>
/// 人员信息对象
/// </summary>
[DataContract]
public class Person
{
[DataMember]
public String name { get; set; }
[DataMember]
public String sex { get; set; }
[DataMember]
public Cnblogs cnblogs { get; set; }
[DataMember]
public List<Contact> contacts { get; set; }
}
构造对象必须有[DataContract]声明,在通过DataContractJsonSerializer进行序列号或者反序列号的过程中只对有[DataMember]声明的属性生效,没有[DataMember]声明的属性将会被忽略,对象属性的大小写需要和json数据对应字段保持一致,否则该属性的值无法获取。
2.Json字符串转换Person对象的转换函数实现
/// <summary>
/// 解析json数据转化为Person对象
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public Person getPersionByJson(String json)
{
if (String.IsNullOrEmpty(json))
{
return null;
} try
{
Person info = new Person();
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
DataContractJsonSerializer ser = new DataContractJsonSerializer(info.GetType());
info = ser.ReadObject(ms) as Person;
return info;
}
catch
{ }
return null;
}
3.调用getPersionByJson方法将Json字符串转换为对象
//Json数据
String json =
@"{
""name"": ""ZhangHui"",
""sex"": ""男"",
""cnblogs"": {
""address"": ""http://www.cnblogs.com/huizhang212/"",
""age"": 2,
""nickname"": ""宇之乐""
},
""contacts"": [
{
""type"": ""QQ"",
""number"": ""411300114""
},
{
""type"": ""Email"",
""number"": ""huizhang212@163.com""
}
]
}";
//json数据转换为Person对象
Person person = getPersionByJson(json);
对象 => Json字符串
通过DataContractJsonSerializer可以直接将对象转换为Json字符串。
1.Person对象转换Json字符串的函数实现
/// <summary>
/// 获Person对象的Json数据
/// </summary>
/// <param name="normal"></param>
/// <returns></returns>
public String getJsonByPerson(Person person)
{
String json = String.Empty;
try
{
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(person.GetType());
ser.WriteObject(ms, person);
ms.Position = ;
using (StreamReader s = new StreamReader(ms))
{
json = s.ReadToEnd();
}
}
catch
{ }
return json;
}
2.调用getJsonByPerson方法将Person对象转换为Json字符串
//构建一个Persion对象
Person person = new Person()
{
name = "ZhangHui",
sex = "男",
cnblogs = new Cnblogs()
{
nickname = "宇之乐",
age = ,
address = "http://www.cnblogs.com/huizhang212/"
},
contacts = new List<Contact>()
{
new Contact(){ type="QQ", number="" },
new Contact(){ type="Email", number="huizhang212@163.com" }
}
};
//转换为json数据
String personJson = getJsonByPerson(person);
Metro应用Json数据处理的更多相关文章
- 【多端应用开发系列1.1.1 —— Android:使用新浪API V2】服务器Json数据处理——Json数据概述
[前白] 一些基础的东西本系列中就不再详述了,争取尽量写些必不可少的技术要点. 由于本系列把Web Service 构建放到了第二部分,Android项目就采用新浪微博API v2作为服务器端. [原 ...
- iOS开发——数据解析Swift篇&简单json数据处理
简单json数据处理 //loadWeather var url = NSURL(string: "http://www.weather.com.cn/adat/sk/101240701.h ...
- Spark SQL JSON数据处理
背景 这一篇可以说是“Hive JSON数据处理的一点探索”的兄弟篇. 平台为了加速即席查询的分析效率,在我们的Hadoop集群上安装部署了Spark Server,并且与我们的Hive数据仓 ...
- python接口自动化(十九)--Json 数据处理---实战(详解)
简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下.首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃 ...
- JSON数据处理框架Jackson精解第一篇-序列化与反序列化核心用法
Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制.它提供了很 ...
- ASP.MVC时间类型json数据处理
服务端返回DateTime属性如果用自带的json方法返回的数据如下: 有2种办法解决一种是采用服务端解决方案,一种是使用前端解决方案 1.前端解决方案 第一步:对Date进行扩展 // 对Date的 ...
- Qt json 数据处理
用到的头文件 #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> json解 ...
- json数据处理实战:Kafka+Flume+Morphline+Solr+Hue数据组合索引
背景:Kafka消息总线的建成,使各个系统的数据得以在kafka节点中汇聚,接下来面临的任务是最大化数据的价值,让数据“慧”说话. 环境准备: Kafka服务器*3. CDH 5.8.3服务器*3,安 ...
- Json数据处理
1.字符串转换为Json数组:取json对象属性值. String st="[{"tradeDate":"2016-09-27","trad ...
随机推荐
- [BZOJ3166][Heoi2013]Alo 可持久化Trie树
3166: [Heoi2013]Alo Time Limit: 20 Sec Memory Limit: 256 MB DescriptionWelcome to ALO ( Arithmetic a ...
- 转:评估指标MAP
转:http://www.zhenv5.com/?p=1079 MAP可以由它的三个部分来理解:P,AP,MAP 先说P(Precision)精度,正确率.在信息检索领域用的比较多,和正确率一块出现的 ...
- [洛谷P4341][BJWC2010]外星联络
题目大意:给你一个长度为$n(n\leqslant3\times10^3)$的字符串,要你求出其中出现次数大于$1$的子串,并按字典序输出次数. 题解:建$SAM$后求出每个点的$size$,最后按字 ...
- Mysql局域网访问授权
如果允许用户myuser从ip为192.168.1.1的主机连接到mysql服务器,并使用password作为密码 GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'1 ...
- Alpha 冲刺 —— 十分之一
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作,对多个目标检测及文字识别模型进行评估.实验,选取较 ...
- 服务器上的 Git - 生成 SSH 公钥
http://git-scm.com/book/zh/ch4-3.html 生成 SSH 公钥 如前所述,许多 Git 服务器都使用 SSH 公钥进行认证. 为了向 Git 服务器提供 SSH 公钥, ...
- web系统中上下移动功能的实现
其实上移下移的思想分几步: 核心思想:交换两个记录的位置字段的值. 问题:如何根据当前记录,找到前一个或者后一个的记录的位置. 第一:在java类属性定义一个position位置字段,不同的位置pos ...
- Oracle把本地的dmp备份文件导入到本地的Oracle数据库中语句
----------------------------------------------------------------------------- 导入语法 imp usename/passw ...
- swiper.js的使用
点击api文档地址, (1)图片轮播banner <script src="js/jquery-2.1.4.min.js"></script> <sc ...
- yum源的使用
yum通过仓库拉取,同时解决了依赖的问题.有仓库的都是通过社区来维护的,不同的发行版会有不同的社区来维护 此时就是客户端和服务器的关系的问题了,yum会依赖一个配置文件, yum 的理念是使用一个中心 ...