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.1 —— Android:使用新浪API V2】服务器Json数据处理——Json数据概述

    [前白] 一些基础的东西本系列中就不再详述了,争取尽量写些必不可少的技术要点. 由于本系列把Web Service 构建放到了第二部分,Android项目就采用新浪微博API v2作为服务器端. [原 ...

  2. iOS开发——数据解析Swift篇&简单json数据处理

    简单json数据处理 //loadWeather var url = NSURL(string: "http://www.weather.com.cn/adat/sk/101240701.h ...

  3. Spark SQL JSON数据处理

    背景   这一篇可以说是“Hive JSON数据处理的一点探索”的兄弟篇.   平台为了加速即席查询的分析效率,在我们的Hadoop集群上安装部署了Spark Server,并且与我们的Hive数据仓 ...

  4. python接口自动化(十九)--Json 数据处理---实战(详解)

    简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下.首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃 ...

  5. JSON数据处理框架Jackson精解第一篇-序列化与反序列化核心用法

    Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制.它提供了很 ...

  6. ASP.MVC时间类型json数据处理

    服务端返回DateTime属性如果用自带的json方法返回的数据如下: 有2种办法解决一种是采用服务端解决方案,一种是使用前端解决方案 1.前端解决方案 第一步:对Date进行扩展 // 对Date的 ...

  7. Qt json 数据处理

    用到的头文件 #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> json解 ...

  8. json数据处理实战:Kafka+Flume+Morphline+Solr+Hue数据组合索引

    背景:Kafka消息总线的建成,使各个系统的数据得以在kafka节点中汇聚,接下来面临的任务是最大化数据的价值,让数据“慧”说话. 环境准备: Kafka服务器*3. CDH 5.8.3服务器*3,安 ...

  9. Json数据处理

    1.字符串转换为Json数组:取json对象属性值. String st="[{"tradeDate":"2016-09-27","trad ...

随机推荐

  1. 除了GPS外的4种获得用户地理位置数据的方法

    纯粹的GPS解决方案以及它所生成的经纬度标签是地理位置数据的公认标准.但是至少还有4种方法可以获得地理位置数据: 1.手机信号塔数据:当移动设备的GPS芯片不能接收到GPS信号时,移动设备就需要与它所 ...

  2. HN2018省队集训

    HN2018省队集训 Day1 今天的题目来自于雅礼的高二学长\(dy0607\). 压缩包下载 密码: 27n7 流水账 震惊!穿着该校校服竟然在四大名校畅通无阻?霸主地位已定? \(7:10\)从 ...

  3. BZOJ1176:[Balkan2007]Mokia——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1176 Description(题面本人自行修改了一下) 维护一个W*W的矩阵,初始值均为0.每次操作 ...

  4. BZOJ5314 [Jsoi2018]潜入行动 【背包类树形dp】

    题目链接 BZOJ5314 题解 设\(f[i][j][0|1][0|1]\)表示\(i\)为根的子树,用了\(j\)个监测器,\(i\)节点是否被控制,\(i\)节点是否放置的方案数 然后转移即可 ...

  5. acid(数据库事务正确执行的四个基本要素的缩写)

    ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...

  6. spark streaming (一)

    实时计算介绍 Spark Streaming, 其实就是一种Spark提供的, 对于大数据, 进行实时计算的一种框架. 它的底层, 其实, 也是基于我们之前讲解的Spark Core的. 基本的计算模 ...

  7. 【agc017E】Jigsaw

    Portal -->agc017 Description 给你\(n\)块积木,每块积木由三个矩形组成,中间的矩形最高高度为\(h\),左边的矩形高度为\(a_i\)离底边高度为\(c_i\), ...

  8. selenium - 查看selenium版本信息

    1. pip list 2. pip show selenium 3. cmd>>python >>> import selenium>>> help( ...

  9. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) A 水 B stl C stl D 暴力 E 树状数组

    A. Unimodal Array time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  10. thinkphp常见问题

    1.数据库查询中execute和query方法的区别 tp中execute()和query()方法都可以在参数里直接输入sql语句. 但是不同的是execute()通常用来执行insert或者upda ...