李海平 陳榮征 李海文
(廣東職業(yè)技術(shù)學(xué)院信息工程系,廣東 佛山 528041)
基于JSON的Android校園助手研究與設(shè)計(jì)
李海平 陳榮征 李海文
(廣東職業(yè)技術(shù)學(xué)院信息工程系,廣東 佛山 528041)
本文設(shè)計(jì)了一款A(yù)ndroid校園助手軟件,客戶端采用Android Studio作為開發(fā)平臺(tái),以JSON數(shù)據(jù)格式為載體。詳細(xì)闡述了JSON數(shù)據(jù)格式的使用,Gson在校園助手中數(shù)據(jù)JSON格式化及JSON數(shù)據(jù)對(duì)象化的應(yīng)用,以及客戶端和服務(wù)端的交互,這些實(shí)現(xiàn)技術(shù)對(duì)開發(fā)相關(guān)項(xiàng)目具有現(xiàn)實(shí)的參考價(jià)值。
Android Studio;JSON;Gson;AsyncHttpClient;PHP
隨著手機(jī)網(wǎng)絡(luò)的發(fā)展,開發(fā)針對(duì)學(xué)生服務(wù)的手機(jī)App的需求越來越強(qiáng)烈。本文設(shè)計(jì)的校園助手App得到廣東大學(xué)生科技創(chuàng)新培育專項(xiàng)資金支持,校園助手主要有以下功能:登錄、校園新聞瀏覽、就業(yè)、信息圈、課表、成績查詢等。本文重點(diǎn)介紹了JSON數(shù)據(jù)格式的使用,主要包括JSON基本語法、校園助手中數(shù)據(jù)JSON格式化、JSON數(shù)據(jù)對(duì)象化,以及校園助手客戶端和服務(wù)端的JSON數(shù)據(jù)交互。
2.1 選擇JSON原因
JSON即JavaScript Object Notation[1],是一種輕量級(jí)的數(shù)據(jù)格式,有意義的字符串,是由特定字符組成不同含義的數(shù)據(jù)格式。雖然它是輕量級(jí)的,但是其數(shù)據(jù)描述能力強(qiáng)大,不僅能夠表示常見的數(shù)據(jù)類型,如String,Boolean,Number,還可以表示數(shù)組以及一些復(fù)雜的對(duì)象。
JSON數(shù)據(jù)格式不像XML描述那樣有太多冗余的內(nèi)容,用它作為網(wǎng)絡(luò)數(shù)據(jù)交互,能夠減少流量,加快網(wǎng)絡(luò)訪問速度,所以在本校園助手中選用JSON作為數(shù)據(jù)交互格式。
2.2 JSON語法
2.2.1 JSON值(value)標(biāo)識(shí)
圖1 值(Value)標(biāo)識(shí)
圖2 值(Value)標(biāo)識(shí)示例
如圖1所示,值(Value)可以表示的類型為:字符(string)、數(shù)值(number)、對(duì)象(object)、數(shù)組(array)、布爾型(true,false),空(null);圖2所示是相應(yīng)的示例。
2.2.2 JSON對(duì)象(object)標(biāo)識(shí)
JSON對(duì)象(object)用大括號(hào){}標(biāo)識(shí)(如圖3所示),一個(gè)對(duì)象每一項(xiàng)用加雙引號(hào)的字符串作為key標(biāo)識(shí)項(xiàng)名稱;中間加冒號(hào)標(biāo)識(shí)取值;右邊是這個(gè)key所對(duì)應(yīng)的值(value);項(xiàng)與項(xiàng)之間用逗號(hào)區(qū)分。一個(gè)學(xué)生及其家里聯(lián)系方式等基本信息可以用以下對(duì)象表示:
{
“Name”:“小明”,
“Age”:19,
“Num”:2014001,
“Interests”:[“跑步”,“健身”],
“HomeContact”:{
“HomeContactName”:“曉紅”,
“HomePhone”:“138**********”,
“HomeAddress”:“廣東省******”
}
}
圖3 對(duì)象(object)標(biāo)識(shí)
2.2.3 JSON數(shù)組(array)標(biāo)識(shí)
數(shù)組(array)用方括號(hào)[]標(biāo)識(shí)數(shù)組(如圖4所示),一個(gè)學(xué)生Interests信息數(shù)組表示如下:
[“跑步”,“健身”]
圖4 數(shù)組(array)標(biāo)識(shí)
3.1 Android Studio配置Gson庫環(huán)境
Gson是Google提供的用來進(jìn)行數(shù)據(jù)JSON格式化和JSON數(shù)據(jù)解析的開源庫[2],從 http://code.google.com/p/google-gson/下載對(duì)應(yīng)jar包,校園助手項(xiàng)目采用gson-2.2.4. jar。
在已經(jīng)建好的校園助手項(xiàng)目中添加jar包:把下載好的gson-2.2.4.jar文件拷貝(Copy),粘貼(Past)到app/libs文件夾,之后Android Studio自動(dòng)列出該文件。選擇app文件夾右鍵,選擇菜單項(xiàng)“Open Module Settings”,在彈出的對(duì)話框中選擇添加(+),再選擇File Dependency,在新彈出的對(duì)話框中選擇gson-2.2.4.jar文件,把gson-2.2.4.jar文件作為該project的依賴項(xiàng),在app目錄下的一個(gè)文件build.gradle就自動(dòng)添加gson-2.2.4.jar編譯選項(xiàng)。通過以上步驟配置好Gson環(huán)境就可以編寫相應(yīng)的JSON程序代碼。
3.2 校園助手中數(shù)據(jù)JSON格式化
3.2.1 校園助手App中的類Student和HomeContact
要將一個(gè)數(shù)據(jù)對(duì)象轉(zhuǎn)為JSON格式化,在Android Studio校園助手項(xiàng)目中要先定義相應(yīng)的類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中數(shù)據(jù)對(duì)象轉(zhuǎn)化為JSON數(shù)據(jù)格式 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); 導(dǎo)入import com.google.gson.Gson包,初始化Student對(duì)象和HomeContact對(duì)象,產(chǎn)生Gson對(duì)象,調(diào)用其toJson方法,把student對(duì)象和HomeContact轉(zhuǎn)為JSON數(shù)據(jù)格式:{"Interests":["籃球","健身","羽毛球"],"Name":"小明","homeContact":{"HomeAddress":"廣東省**********","HomeContact-Name":" 曉 紅 ","HomePhone":"138*******"},"Age":20, "Num":2014001}。這個(gè)JSON字符串格式就可以作為數(shù)據(jù)發(fā)送到服務(wù)端。 3.2.3 JSON字符串轉(zhuǎn)化為Student對(duì)象 調(diào)用Gson中的fromJson方法把JSON數(shù)據(jù)格式轉(zhuǎn)為Student類,如圖5所示,其轉(zhuǎn)為Student類對(duì)象后HomeContact類對(duì)象也被自動(dòng)創(chuàng)建出來(調(diào)試模式查看Student類)。Student student2=gson.fromJson(strJSON,Student.class); 校園助手客戶端把數(shù)據(jù)JSON格式化,通過AsyncHttp-Client發(fā)送數(shù)據(jù)到服務(wù)端,服務(wù)端采用PHP把客戶端發(fā)送過來的JSON數(shù)據(jù)用json_decode解析[3],然后再對(duì)數(shù)據(jù)進(jìn)行處理,如果需要服務(wù)端返回?cái)?shù)據(jù),PHP服務(wù)端需調(diào)用json_encode對(duì)數(shù)據(jù)JSON格式化,返回給客戶端。以下是校園助手登錄功能相關(guān)代碼實(shí)現(xiàn)(如代碼塊1和代碼塊2)。 代碼塊1客戶端調(diào)用代碼塊2 PHP服務(wù)端響應(yīng)AsyncHttpClient client=newAsyncHttpClient(); Map 校園助手項(xiàng)目成功地利用JSON數(shù)據(jù)格式搭建了Android客戶端和服務(wù)端數(shù)據(jù)交互框架,實(shí)現(xiàn)了以下基本功能:登錄、校園新聞瀏覽、就業(yè)、信息圈、課表、成績查詢等。還有不少功能由于時(shí)間緊還沒有來得及完善,但是有了這樣的JSON數(shù)據(jù)交互框架,對(duì)完善系統(tǒng)提供了質(zhì)量保證。 [1]介紹JSON[EB/OL].http://www.json.org/json-zh.html. [2]耿東久,索岳,陳渝,等.基于Android手機(jī)的遠(yuǎn)程訪問和控制系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2011,3 1(2):2 0-2 1. [3]傳智播客高教產(chǎn)品研發(fā)部.Android移動(dòng)應(yīng)用基礎(chǔ)教程[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-),男,江西寧都人,碩士,研究方向?yàn)橐苿?dòng)應(yīng)用開發(fā)、軟件技術(shù)。 2015廣東大學(xué)生科技創(chuàng)新培育專項(xiàng),項(xiàng)目編號(hào):p d j h 2016 b058 4;2016年度廣東職業(yè)技術(shù)學(xué)院教學(xué)改革項(xiàng)目,項(xiàng)目編號(hào):J201608。4 校園助手客戶端與服務(wù)端交互
5 結(jié)束語
(Guangdong Polytechnic,Foshan 528041,Guangdong)