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. Redis存储系统

    一.QuickStart 1.Redis简介: redis是一个性能非常优秀的内存数据库,通过key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string ...

  2. SVN跨服务器自动更新--实现文件分发

    目标:SVN版本库提交,服务器中的工作拷贝能自动update. 实现方法:subversion, curl,php脚本实现,并且入mysql库来进行管理.改hosts文件来进行访问!提交触发钩子脚本时 ...

  3. winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)

    http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已 ...

  4. poj3469 Dual Core CPU

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 25576   Accepted: 11033 ...

  5. wireshark 根据域名筛选

    应该去掉引号

  6. lnmp集成环境tp nginx vhost配置

    server { listen 80; server_name xxx; charset utf-8; root /home/wwwroot/axxx/public; index index.html ...

  7. 手脱EZIP v1.0

    一.单步 1.载入PEID查壳 EZIP v1.0 2.载入OD,一上来就是一个大跳转,F8单步一直走 0040D0BE > $ /E9 jmp Notepad.004102DC ; //入口点 ...

  8. 前端端对端测试:基于PhantomJS的CasperJS

    简介 Casperjs是一个基于PhantomJS和SlimerJS的前端端对端测试框架,当然你也可以使用它完成网络爬虫功能,它的特点的通过简单的脚本模拟浏览器行为, 主要有casper.tester ...

  9. Android 基于身份证号的自定义键盘

    上图上代码 public class MainActivity extends AppCompatActivity { EditText writebankcard_mobileedit; Custo ...

  10. 如何在WIndows电脑上安装 SVN Server 实现代码版本控制

    One 下载-安装 SVN SVNServer  先去官网下载服务器版本的svn server,下载地址 :https://www.visualsvn.com/server/download/   选 ...