【WP开发】JSON数据的读与写

在不使用其他库的情况下,WP-RT应用中也可以处理JSON数据。主要的几个类都放到Windows.Data.Json命名空间中:

IJsonValue接口作为用于封装JSON数据的规范,其中只读属性ValueType通过JsonValueType枚举来标识JSON值的类型,如String表示JSON的值是字符串,Number表示数值等。

实现IJsonValue接口的类都用于处理JSON数据,比如JsonObject表示单个JSON对象,JsonArray表示数组等。

可能大家觉得我前面说的都是废话,确实挺废的,其实这些类型用起来也不那么复杂,大家只要多写写多耍耍就可以掌握了。

所以,我们用一堆例子来试玩一下。

1、创建JSON数组,并向其中添加元素。

            // JSON数组
            JsonArray arr = new JsonArray();
            // 向数组中添加元素
            arr.Add(JsonValue.CreateNumberValue(100d));
            arr.Add(JsonValue.CreateNumberValue(200d));
            arr.Add(JsonValue.CreateStringValue("hot dog"));
            // 将JSON数组表示为字符串
            string jsonstr = arr.Stringify();
            Debug.WriteLine(jsonstr);

Stringify方法可以提取JSON对象的字符串表示形式。得到结果如下:

[100,200,"hot dog"]

2、也可以用JsonObject类来创建JSON对象。

            JsonObject obj = new JsonObject();
            // 设置各字段的名字和值
            obj.SetNamedValue("工号", JsonValue.CreateStringValue("000-410002"));
            obj.SetNamedValue("姓名", JsonValue.CreateStringValue("王小狗"));
            obj.SetNamedValue("年龄", JsonValue.CreateNumberValue(45));
            obj.SetNamedValue("婚否", JsonValue.CreateBooleanValue(true));
            // 提取字符串
            string jsstr = obj.Stringify();
            Debug.WriteLine(jsstr);

各位知道,JSON对象是用一对大括号来包装的,每个字段用逗号隔开,而字段名和值之间由冒号隔开,即字段包括名字和具体的值,故SetNamedValue方法定义如下:

void SetNamedValue(string name, IJsonValue value);

name表示JSON对象的字段名,而value是值,因为JSON的值也可以是复杂的类型,因为value参数定义为IJsonValue类型,即凡实现IJsonValue按口的类型都OK。

上面例子得到的结果如下:

{"工号":"000-410002","姓名":"王小狗","年龄":45,"婚否":true}

3、从字符串生成JSON数据。

可以分析表示JSON的字符串,然后生成相关类型。

            string tststr = "{\"ID\":\"40033201\", \"Name\":\"小明\", \"City\":\"天津\"}";
            JsonObject obj = JsonObject.Parse(tststr);
            // 获取各字段的值
            string id = obj.GetNamedString("ID");
            string name = obj.GetNamedString("Name");
            string city = obj.GetNamedString("City");
            string display = string.Format("学号:{0}\n姓名:{1}\n城市:{2}", id, name, city);
            Debug.WriteLine(display);

Parse是静态方法,传入表示JSON数据的字符串,就可以产生对应的实例对象。要从JSON数据中读取指定字段的值,可以调用GetNamedXXX,如上面示例中要获取的值是字符串类型的,因而调用GetNamedString方法。

上面的执行结果如下:

学号:40033201
姓名:小明
城市:天津

好了,以上几个例子比较TMD简单,我350%相信大家能看懂,下面咱们来个BT一点的,看看嵌套的JSON对象。

            JsonObject 中奖人 = new JsonObject();
            // 子对象
            JsonObject 地址 = new JsonObject();
            地址.SetNamedValue("省", JsonValue.CreateStringValue("广东"));
            地址.SetNamedValue("市", JsonValue.CreateStringValue("汕头"));
            地址.SetNamedValue("详细地址", JsonValue.CreateStringValue("不告诉你"));
            // 子对象
            JsonArray 中奖号码 = new JsonArray();
            中奖号码.Add(JsonValue.CreateNumberValue(5d));
            中奖号码.Add(JsonValue.CreateNumberValue(27d));
            中奖号码.Add(JsonValue.CreateNumberValue(2d));
            中奖号码.Add(JsonValue.CreateNumberValue(32d));
            // 设置字段
            中奖人.SetNamedValue("姓名", JsonValue.CreateStringValue("超级赌圣"));
            中奖人.SetNamedValue("住址", 地址);
            中奖人.SetNamedValue("个人简介", JsonValue.CreateStringValue("赌遍太阳系无敌手"));
            中奖人.SetNamedValue("中奖号码", 中奖号码);

            string str = 中奖人.Stringify();
            Debug.WriteLine(str);

得到结果如下:

{"姓名":"超级赌圣","住址":{"省":"广东","市":"汕头","详细地址":"不告诉你"},"个人简介":"赌遍太阳系无敌手","中奖号码":[5,27,2,32]}

最后感谢大家观看本期的老周吹牛节目。

时间: 2024-08-01 21:45:44

【WP开发】JSON数据的读与写的相关文章

ios开发 json数据文件的存取

将Json存进本地文件夹 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);     NSString *path=[paths objectAtIndex:0];     NSString *Json_path=[path stringByAppendingPathComponent:@"JsonFile.json"];     //==写入文件

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

Jsoncpp写“鱘”的json数据,报错。

最近在用Json::FastWriter生成json数据时,发现一个问题.含有"鱘"字的json字段会多出一个斜杠,不知道是不是编码的问题. C++要使用JSON来解析数据,一般采用jsoncpp. 网站:http://sourceforge.net/projects/jsoncpp/ 经过json校验http://jsonlint.com/,报错 很是郁闷.现在只能从生成的字符串想办法了. 遍历生成的字符串,删除"\". 生成json数据成功! Jsoncpp写&

AngularJS学习笔记(3)——通过Ajax获取JSON数据

通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app="todoApp"> <head> <meta charset="UTF-8"> <title>TO DO List</title> <link href="./bootstrap/css/bootstrap

iOS开发——XML/JSON数据解析

除了XML和Json,文中还涉及到的一些知识:第三方类库的使用,获取本地文件内容,网站API使用,GCD多线程编程,不做详细介绍,在代码出现的地方会注明. 先安利一波: Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特定的数据结构,必须对其进行解析,得到我们可以处理的数据.所谓“解析”,就是从事先规定好的格式串中提取数据.解析的前提是数据的提供方

【Qt编程】基于Qt的词典开发系列&amp;lt;九&amp;gt;--JSON数据解析

在上一篇文章<用户登录及API调用的实现>中,我通过程序实现了用户登录及API调用的实现.从而能够实现网络查词.添词的操作.可是.从上文中能够看到.调用API后返回的是JSON格式的数据,例如以下图所看到的(在QtCreator中的显示): 为了更好的观察JSON格式.我整理后显演示样例如以下: 显然.为了显示查词的结果,我们必须在上图中提取实用的信息,并正确的显示出来. 上图中每一行内容的意思我已经在文章<调用网络API>中作了解释.我在词典中选择想要显示的内容有:单词本身.单词

iOS开发网络篇—JSON数据的解析

iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim

【Qt编程】基于Qt的词典开发系列&lt;九&gt;--JSON数据解析

在上一篇文章<用户登录及API调用的实现>中,我通过程序实现了用户登录及API调用的实现,从而能够实现网络查词.添词的操作.但是,从上文中可以看到,调用API后返回的是JSON格式的数据,如下图所示(在QtCreator中的显示): 为了更好的观察JSON格式,我整理后显示如下: 显然,为了显示查词的结果,我们必须在上图中提取有用的信息,并正确的显示出来.上图中每一行内容的意思我已经在文章<调用网络API>中作了解释.我在词典中选择想要显示的内容有:单词本身.单词ID.中文解释.英

iOS网络编程开发—JSON和XML数据解析

iOS网络编程开发—JSON解析 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的