【移動(dòng)應(yīng)用開發(fā)技術(shù)】android json 解析_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】android json 解析_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】android json 解析_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】android json 解析_第4頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】android json 解析_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】androidjson解析

一、json簡(jiǎn)介

json指的是javascript對(duì)象表示法(javascriptobjectnotation),它是一種輕量級(jí)文本數(shù)據(jù)交換格式,類似于xml,但比xml更小,更快,更易解析(xml需要下載到手機(jī)端進(jìn)行解析);

json是基于javascript的一個(gè)子集,它使用javascript語法來描述數(shù)據(jù)對(duì)象,但是json任然獨(dú)立于語言和平臺(tái),json解析器和json庫支持許多不同編程語言,同時(shí)也易于機(jī)器解析和生成;優(yōu)酷:/v_show/id_XODYzMTEwODY4.html愛奇藝:/w_19rsb9thy1.html#vfrm=5-7-4-1(涉及服務(wù)器的搭建可見視頻)二、json數(shù)據(jù)解析

1、jsonobject(多個(gè),也可以單個(gè))

{"person":{"address":"上海黃浦區(qū)","id":1001,"name":"jack"}}

2、解析,一個(gè)對(duì)象,多組值,可以使用相同的語法表示多個(gè)值(每個(gè)值包含多個(gè)記錄):

這里最值得注意的是,能夠表示多個(gè)值,每個(gè)值進(jìn)而包含多個(gè)值。但是還應(yīng)該注意,在不同的主條目,記錄中實(shí)際的名稱/值對(duì)可以

不一樣。JSON是完全動(dòng)態(tài)的,允許在JSON結(jié)構(gòu)的中間改變表示數(shù)據(jù)的方式。在處理JSON格式的數(shù)據(jù)時(shí),沒有需要遵守的預(yù)定義的約束。所以,在同樣的數(shù)據(jù)結(jié)構(gòu)中,可以改變表

示數(shù)據(jù)的方式,甚至可以以不同方式表示同一事物。

{"persons":[{"address":"上海黃浦區(qū)","id":1001,"name":"jack"},{"address":"上海閔行區(qū)","id":1002,"name":"rose"},{"address":"上海黃浦區(qū)","id":1003,"name":"mick"}]}

3、解析jsonArray

{"listString":["北京","上海","湖南"]}

4、解析jsonobject和jsonarray混合對(duì)象

{"listMap":[{"id":1001,"address":"北京","name":"jack"},{"id":1001,"address":"上海","name":"rose"}]}文件目錄:/20150103111133765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDEzNDE3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Centeractivity_main.xml代碼不再給出[html]

viewplaincopypublic

class

MainActivity

extends

Activity

{

private

Button

btn_person;

private

Button

btn_persons;

private

Button

btn_listString;

private

Button

btn_listMap;

private

TextView

tv_show;

private

static

String

PATH

=

"00:8080/2.9/com/JsonServlet";

private

static

final

String

TAG

=

"MainActivity";

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btn_person

=

(Button)findViewById(R.id.btn_person);

btn_persons

=

(Button)findViewById(R.id.btn_persons);

btn_listString

=

(Button)findViewById(R.id.btn_listString);

btn_listMap

=

(Button)findViewById(R.id.btn_listMap);

tv_show

=

(TextView)findViewById(R.id.tv_show);

btn_person.setOnClickListener(new

MyButtonListenerPersion());

btn_persons.setOnClickListener(new

MyButtonListenerPersions());

btn_listString.setOnClickListener(new

MyButtonListenerlistString());

btn_listMap.setOnClickListener(new

MyBuutonListenerlistMap());

}

class

MyButtonListenerPersion

implements

OnClickListener{

@Override

public

void

onClick(View

v)

{

String

path2=PATH+"?action_flag=person";

String

jsonString1

=

HttpUtils.getJsonContent(path2);

Person

person

=

JsonTools.getPerson("person",

jsonString1);

tv_show.setText(person.toString());

Log.i(TAG,

person.toString());

}

}

class

MyButtonListenerPersions

implements

OnClickListener{

@Override

public

void

onClick(View

v)

{

String

path3=PATH+"?action_flag=persons";

String

jsonString2

=

HttpUtils.getJsonContent(path3);

List<Person>

list2

=

JsonTools.getPersons("persons",

jsonString2);

tv_show.setText(list2.toString());

Log.i(TAG,

list2.toString());

}

}

class

MyButtonListenerlistString

implements

OnClickListener{

@Override

public

void

onClick(View

v)

{

String

path4=PATH+"?action_flag=listString";

String

jsonString3

=

HttpUtils.getJsonContent(path4);

List<String>

list3

=

JsonTools.getList("listString",

jsonString3);

tv_show.setText(list3.toString());

Log.i(TAG,

list3.toString());

}

}

class

MyBuutonListenerlistMap

implements

OnClickListener{

@Override

public

void

onClick(View

v)

{

String

path5=PATH+"?action_flag=listMap";

String

jsonString4

=

HttpUtils.getJsonContent(path5);

List<Map<String,Object>>

list4

=

JsonTools.getListMap("listMap",

jsonString4);

tv_show.setText(list4.toString());

Log.i(TAG,

list4.toString());

}

}

}

/********************************************************************************************************************************************************************************/[html]

viewplaincopypublic

class

Person

{

private

int

id;

private

String

name;

private

String

address;

public

Person()

{

super();

}

public

Person(int

id,

String

name,

String

address)

{

super();

this.id

=

id;

=

name;

this.address

=

address;

}

public

int

getId()

{

return

id;

}

public

void

setId(int

id)

{

this.id

=

id;

}

public

String

getName()

{

return

name;

}

public

void

setName(String

name)

{

=

name;

}

public

String

getAddress()

{

return

address;

}

public

void

setAddress(String

address)

{

this.address

=

address;

}

@Override

public

String

toString()

{

return

"address="

+

address

+

",

id="

+

id

+

",

name="

+

name;

}

}

/************************************************************************************************************************************************************************************/[html]

viewplaincopypublic

class

JsonTools

{

public

JsonTools()

{

}

/**

*

獲取對(duì)象數(shù)據(jù)

*

@param

key

*

@param

jsonString

*

@return

*/

public

static

Person

getPerson(String

key,String

jsonString){

Person

person

=

new

Person();

try

{

//構(gòu)建一個(gè)JSONObject

jsontokener

JSONObject

jsonObject

=

new

JSONObject(jsonString);

//得到JSONObject值與密鑰相關(guān),就是對(duì)象

JSONObject

personObject

=

jsonObject.getJSONObject(key);

//取得數(shù)據(jù)

person.setId(personObject.getInt("id"));

person.setName(personObject.getString("name"));

person.setAddress(personObject.getString("address"));

}

catch

(JSONException

e)

{

e.printStackTrace();

}

return

person;

}

/**

*

獲取對(duì)象數(shù)組數(shù)據(jù)

*

@param

key

*

@param

jsonString

*

@return

*/

public

static

List<Person>

getPersons(String

key,String

jsonString){

List<Person>

list

=

new

ArrayList<Person>();

try

{

JSONObject

jsonObject

=

new

JSONObject(jsonString);

//返回json的數(shù)組

JSONArray

jsonArray

=

jsonObject.getJSONArray(key);

for(int

i=0;i<jsonArray.length();i++){

JSONObject

jsonObject2

=

jsonArray.getJSONObject(i);

Person

person

=

new

Person();

person.setId(jsonObject2.getInt("id"));

person.setName(jsonObject2.getString("name"));

person.setAddress(jsonObject2.getString("address"));

list.add(person);

}

}

catch

(JSONException

e)

{

e.printStackTrace();

}

return

list;

}

/**

*

獲取String數(shù)組數(shù)據(jù)

*

@param

key

*

@param

jsonString

*

@return

*/

public

static

List<String>

getList(String

key,String

jsonString){

List<String>

list

=

new

ArrayList<String>();

try

{

JSONObject

jsonObject

=

new

JSONObject(jsonString);

JSONArray

jsonArray

=

jsonObject.getJSONArray(key);

for(int

i=0;i<jsonArray.length();i++){

String

msg

=

jsonArray.getString(i);

list.add(msg);

}

}

catch

(JSONException

e)

{

e.printStackTrace();

}

return

list;

}

/**

*

獲取對(duì)象的Map集合數(shù)據(jù)

*

@param

key

*

@param

jsonString

*

@return

*/

public

static

List<Map<String,Object>>

getListMap(String

key,String

jsonString){

List<Map<String,Object>>

list

=

new

ArrayList<Map<String,Object>>();

try

{

JSONObject

jsonObject

=

new

JSONObject(jsonString);

JSONArray

jsonArray

=

jsonObject.getJSONArray(key);

for(int

i=0;i<jsonArray.length();i++){

JSONObject

jsonObject2

=

jsonArray.getJSONObject(i);

Map<String,Object>

map

=

new

HashMap<String,

Object>();

Iterator<String>

iterator

=

jsonObject2.keys();

while(iterator.hasNext()){

String

json_key

=

iterator.next();

Object

json_value

=

jsonObject2.get(json_key);

if(json_value==null){

json_value

=

"";

}

map.put(json_key,

json_value);

}

list.add(map);

}

}

catch

(JSONException

e)

{

e.printStackTrace();

}

return

list;

}

}

/************************************************************************************************************************************************************************************/[html]

viewplaincopypublic

class

HttpUtils

{

/*

*

打開遠(yuǎn)程鏈接getContent

*/

public

HttpUtils()

{

}

public

static

String

getJsonContent(String

path){

try

{

//指定資源參數(shù)實(shí)例

URL

url

=

new

URL(path);

//url.openConnection()指定打開一個(gè)遠(yuǎn)程資源

//HttpURLConnection抽象的Http連接方法extends

URLConnection

HttpURLConnection

connection

=

(HttpURLConnection)url.openConnection();

//在3秒內(nèi)不能建立連接,將拋異常

connection.setConnectTimeout(3000);

//設(shè)置請(qǐng)求的命令將被發(fā)送到遠(yuǎn)程HTTP服務(wù)器。這個(gè)方法只能在連接稱為。

connection.setRequestMethod("GET");

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論