版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 咖啡館裝修工程居間服務(wù)
- 證券公司對(duì)公裝修合同
- 時(shí)尚男裝店門頭翻新協(xié)議
- 水果連鎖便利店配送合同
- 【部編版】二年級(jí)上冊(cè)道德與法治《假期有收獲》精美課件
- 家具配送協(xié)議模板
- 鋁合金型材運(yùn)輸合同
- 珠寶快遞運(yùn)輸服務(wù)合同
- 教育培訓(xùn)機(jī)構(gòu)居間合同
- 水產(chǎn)冷凍運(yùn)輸糾紛答辯狀
- 因?yàn)楹笠釡y(cè)定成績(jī)是種畜優(yōu)秀性狀遺傳性能的活證據(jù)課件
- 本科教學(xué)工作審核評(píng)估方案要點(diǎn)課件
- 北京市統(tǒng)一醫(yī)療服務(wù)收費(fèi)標(biāo)準(zhǔn)
- 《人因工程》配套教學(xué)課件
- 骨傷科中醫(yī)治療方法課件
- 家校共育教案5
- 全國(guó)大學(xué)生化妝品配技術(shù)技能大賽理論考試題庫-下(多選、判斷題匯總)
- 食品生產(chǎn)監(jiān)督檢查要點(diǎn)表(完整版)
- 青島版五年級(jí)上冊(cè)科學(xué)15 材料的漂浮能力
- 101個(gè)蝌蚪寶寶-課件
- 小說的敘述角度及作用 文學(xué)類閱讀 高考語文一輪復(fù)習(xí) (全國(guó)通用)
評(píng)論
0/150
提交評(píng)論