APP下载

JSON在AppInventor中的应用

2021-06-25王德贵

电脑报 2021年2期
关键词:数据结构列表文档

王德贵

上期我们已经介绍了JSON数据的特点和重要性。现在我们通过JSON与XML的对比更好地理解JSON的特点和优势,并通过AppInventor实例看看JSON的用法。

一、JSON与XML的解析方式

1.比较

JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。XML和JSON都有很好的扩展性,不过在JavaScript领域JSON是主场作战,能够存储JavaScript复合对象,有着XML不可比拟的优势。

JSON和XML还有另外一个很大的区别在于有效数据率。JSON作为数据包格式传输的时候具有更高的效率,这是因为JSON不像XML那样需要有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输压力。

2.XML的两种解析方式

XML一是通过文档模型解析,也就是通过父标签索引出一组标记。例如:xmlData.getElements

ByTagName(“tagName”),但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。

另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。凡是这样可扩展的结构数据解析起来一定都很困难。

3.JSON的解析更高效

如果预先知道JSON结构的情况下,使用JSON进行数据传递简直是效率太高了,能写出实用、美观、可读性强的代码。因此JSON非常适合初学或业余开发爱好者。但是对于专业的应用开发人员XML可能更实用,毕竟XML才是真正的结构化标记语言,利于进行数据传递。

而如果不知道JSON的结构而去解析JSON的话,费时费力不说,代码也会变得冗余拖沓。但是掌握了技巧这个问题就很好解决了,因为在json.js中的toJSONString()就可以看到JSON的字符串结构。经常使用JSON的人看到这个字符串之后,就能明晰这个JSON的结构了。

JSON数据有常用的封装和解析工具,既方便又实用,本文不做详细描述,有兴趣的朋友可以自主查阅JsonObject、Gson、Fastjson等关键词来学习。

二、在AppInventor中调用API的应用实例

JSON数据交换格式,可以应用于各种编程语言。去年3月份我做过一次全国直播:人工智能专题作品解析—AppInventor安卓应用开发——疫情实时数据查询,详情可以在B站观看(视频号:BV1hi4y1F7jS)。通过POST请求,获取API原始JSON数据,在网页上美化输出,格式如下图。在获取疫情实时数据后,分析出数据结构,从而编写出手机程序,可以实时获取相应的数据信息。

1.获取API数据

这是测试时,直接在网页上输入POST请求网址(搜索“疫情数据接口API 丁香园”,具体请查看API相关文档),得到的数据。

從数据中看到,返回结果是“results”,是个列表,数据在“[]”里,在列表里有1个对象,对象里有多个键值对,其中在键“cities”里,又有一个列表,包含多个对象,对应各个城市数据,这个列表就是键“cities”的值。

2.解析JSON文本

把请求的返回结果解码,提取相应的省级数据列表信息,并保存在变量“results”里。

3.提取应用信息

在省级疫情数据中,提取各城市相关信息,并通过遍历列表功能,将所有城市的疫情相关数据(本例使用城市、当前确诊、累计确诊)在App上显示出来。想查看具体使用,请在百度搜索“人工智能专题作品解析—AppInventor安卓应用开发——疫情实时数据查询”即可。

所以在处理JSON数据时,应该先了解其数据结构,再提取数据,就简单多了。因而,在学习编程过程中,涉及人工智能类问题,需要调用API的时候,了解和掌握JSON数据结构和特点,显得尤为重要,也能更好地应用于实践,更得心应手。希望你通过教学视频能真正掌握JSON数据交换格式,更好地掌握列表(数组)数据类型的操作,制作出更多更好的应用案例。

猜你喜欢

数据结构列表文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
轻松编辑PDF文档
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
扩列吧
Word文档 高效分合有高招
列表法解分式方程问题探索
列表画树状图各有所长
2011年《小说月刊》转载列表