李海平 陈荣征 李海文
(广东职业技术学院信息工程系,广东 佛山 528041)
基于JSON的Android校园助手研究与设计
李海平 陈荣征 李海文
(广东职业技术学院信息工程系,广东 佛山 528041)
本文设计了一款Android校园助手软件,客户端采用Android Studio作为开发平台,以JSON数据格式为载体。详细阐述了JSON数据格式的使用,Gson在校园助手中数据JSON格式化及JSON数据对象化的应用,以及客户端和服务端的交互,这些实现技术对开发相关项目具有现实的参考价值。
Android Studio;JSON;Gson;AsyncHttpClient;PHP
随着手机网络的发展,开发针对学生服务的手机App的需求越来越强烈。本文设计的校园助手App得到广东大学生科技创新培育专项资金支持,校园助手主要有以下功能:登录、校园新闻浏览、就业、信息圈、课表、成绩查询等。本文重点介绍了JSON数据格式的使用,主要包括JSON基本语法、校园助手中数据JSON格式化、JSON数据对象化,以及校园助手客户端和服务端的JSON数据交互。
2.1 选择JSON原因
JSON即JavaScript Object Notation[1],是一种轻量级的数据格式,有意义的字符串,是由特定字符组成不同含义的数据格式。虽然它是轻量级的,但是其数据描述能力强大,不仅能够表示常见的数据类型,如String,Boolean,Number,还可以表示数组以及一些复杂的对象。
JSON数据格式不像XML描述那样有太多冗余的内容,用它作为网络数据交互,能够减少流量,加快网络访问速度,所以在本校园助手中选用JSON作为数据交互格式。
2.2 JSON语法
2.2.1 JSON值(value)标识
图1 值(Value)标识
图2 值(Value)标识示例
如图1所示,值(Value)可以表示的类型为:字符(string)、数值(number)、对象(object)、数组(array)、布尔型(true,false),空(null);图2所示是相应的示例。
2.2.2 JSON对象(object)标识
JSON对象(object)用大括号{}标识(如图3所示),一个对象每一项用加双引号的字符串作为key标识项名称;中间加冒号标识取值;右边是这个key所对应的值(value);项与项之间用逗号区分。一个学生及其家里联系方式等基本信息可以用以下对象表示:
{
“Name”:“小明”,
“Age”:19,
“Num”:2014001,
“Interests”:[“跑步”,“健身”],
“HomeContact”:{
“HomeContactName”:“晓红”,
“HomePhone”:“138**********”,
“HomeAddress”:“广东省******”
}
}
图3 对象(object)标识
2.2.3 JSON数组(array)标识
数组(array)用方括号[]标识数组(如图4所示),一个学生Interests信息数组表示如下:
[“跑步”,“健身”]
图4 数组(array)标识
3.1 Android Studio配置Gson库环境
Gson是Google提供的用来进行数据JSON格式化和JSON数据解析的开源库[2],从 http://code.google.com/p/google-gson/下载对应jar包,校园助手项目采用gson-2.2.4. jar。
在已经建好的校园助手项目中添加jar包:把下载好的gson-2.2.4.jar文件拷贝(Copy),粘贴(Past)到app/libs文件夹,之后Android Studio自动列出该文件。选择app文件夹右键,选择菜单项“Open Module Settings”,在弹出的对话框中选择添加(+),再选择File Dependency,在新弹出的对话框中选择gson-2.2.4.jar文件,把gson-2.2.4.jar文件作为该project的依赖项,在app目录下的一个文件build.gradle就自动添加gson-2.2.4.jar编译选项。通过以上步骤配置好Gson环境就可以编写相应的JSON程序代码。
3.2 校园助手中数据JSON格式化
3.2.1 校园助手App中的类Student和HomeContact
要将一个数据对象转为JSON格式化,在Android Studio校园助手项目中要先定义相应的类Student和HomeContact,如下所示:
public class Student{
String Name;
int Age;
int Num;
ArrayList public Student(){ Interests=new ArrayList } HomeContact homeContact; } public class HomeContact{ String HomeContactName; String HomePhone; String HomeAddress; } 3.2.2 校园助手App中数据对象转化为JSON数据格式 Gson gson=new Gson(); Student student=new Student(); student.Name="小明"; student.Age=20; student.Num=2014001; student.Interests.add("篮球"); student.Interests.add("健身"); student.Interests.add("羽毛球"); HomeContact homeContact=new HomeContact(); homeContact.HomeAddress="广东省**********"; homeContact.HomePhone="138*******"; homeContact.HomeContactName="晓红"; student.homeContact=homeContact; String strJSON=gson.toJson(student); 导入import com.google.gson.Gson包,初始化Student对象和HomeContact对象,产生Gson对象,调用其toJson方法,把student对象和HomeContact转为JSON数据格式:{"Interests":["篮球","健身","羽毛球"],"Name":"小明","homeContact":{"HomeAddress":"广东省**********","HomeContact-Name":" 晓 红 ","HomePhone":"138*******"},"Age":20, "Num":2014001}。这个JSON字符串格式就可以作为数据发送到服务端。 3.2.3 JSON字符串转化为Student对象 调用Gson中的fromJson方法把JSON数据格式转为Student类,如图5所示,其转为Student类对象后HomeContact类对象也被自动创建出来(调试模式查看Student类)。Student student2=gson.fromJson(strJSON,Student.class); 校园助手客户端把数据JSON格式化,通过AsyncHttp-Client发送数据到服务端,服务端采用PHP把客户端发送过来的JSON数据用json_decode解析[3],然后再对数据进行处理,如果需要服务端返回数据,PHP服务端需调用json_encode对数据JSON格式化,返回给客户端。以下是校园助手登录功能相关代码实现(如代码块1和代码块2)。 代码块1客户端调用代码块2 PHP服务端响应AsyncHttpClient client=newAsyncHttpClient(); Map 校园助手项目成功地利用JSON数据格式搭建了Android客户端和服务端数据交互框架,实现了以下基本功能:登录、校园新闻浏览、就业、信息圈、课表、成绩查询等。还有不少功能由于时间紧还没有来得及完善,但是有了这样的JSON数据交互框架,对完善系统提供了质量保证。 [1]介绍JSON[EB/OL].http://www.json.org/json-zh.html. [2]耿东久,索岳,陈渝,等.基于Android手机的远程访问和控制系统[J].计算机应用,2011,3 1(2):2 0-2 1. [3]传智播客高教产品研发部.Android移动应用基础教程[M].北京:中国铁道出版社,2014. Research and Design of Android Campus Assistant Based on JSON Li Haiping Chen Rongzheng Li Haiwen This paper develops an Android campus assistant app,which uses Android Studio as the development platform,and uses JSON data format as the carrier.This paper elaborates on the usage of the JSON data format,the application of Gson in JSON formatting data and JSON data objectification,and the interaction between client and server.The realization of these technologies has practical reference value to the development of related project. Android Studio;JSON;Gson;AsyncHttpClient;PHP TP311.52 A 1008-6609(2016)10-0024-03 李海平(19 8 2-),男,江西宁都人,硕士,研究方向为移动应用开发、软件技术。 2015广东大学生科技创新培育专项,项目编号:p d j h 2016 b058 4;2016年度广东职业技术学院教学改革项目,项目编号:J201608。4 校园助手客户端与服务端交互
5 结束语
(Guangdong Polytechnic,Foshan 528041,Guangdong)