android中json解析及使用(中)
接上文六、通过JSONObject与JSONArray来解析json我们可以通过JSONObject与JSONArray的getInt,getString,getDouble,getJSONArray,getJSONObject等函数来解析json.以下是一个通过网络取得json文本,然后解析的示例。示例3 public AppGuessResponse getApp
·
六、通过JSONObject与JSONArray来解析json
我们可以通过JSONObject与 JSONArray 的getInt,getString,getDouble,getJSONArray,getJSONObject等函数来解析json.
以下是一个通过网络取得json文本,然后解析的示例。
示例3
public AppGuessResponse getAppListFromHttp ( Context mContext ){String url = "http://10.158.166.110:8080/AndroidServer/JsonServlet" ;AppGuessResponse res = new AppGuessResponse ();try{HttpReturn ret = getDataFromHttp ( url );if ( ret . getCode () == HttpStatus . SC_OK ){res . parseFrom ( ret . getBody ());}} catch ( Exception e ){Log . e ( tag , "" , e );}return res ;}public HttpReturn getDataFromHttp ( String url ) { /* HttpGet对象*/ HttpGet httpRequest = new HttpGet ( url ); int code = - 1 ; try { /* HttpClient对象*/ HttpClient httpClient = new DefaultHttpClient (); /* 获得HttpResponse对象*/ HttpResponse httpResponse = httpClient . execute ( httpRequest ); code = httpResponse . getStatusLine (). getStatusCode (); if ( code == HttpStatus . SC_OK ) { // 取得返回的数据 byte bytes [] = EntityUtils . toByteArray ( httpResponse . getEntity ()); return new BaseHttpReturn ( code , bytes ); } else { return new BaseHttpReturn ( code ); } } catch ( ClientProtocolException e ) { e . printStackTrace (); } catch ( IOException e ) { e . printStackTrace (); } return new BaseHttpReturn ( code ); }
interface
HttpReturn
{
int
getCode
();
byte
[]
getBody
();
}
class
BaseHttpReturn
implements
HttpReturn
{
final
int
code
;
final
byte
body
[];
BaseHttpReturn
(
int
code
)
{
this
.
code
=
code
;
this
.
body
=
null
;
}
BaseHttpReturn
(
int
code
,
byte
bytes
[])
{
this
.
code
=
code
;
this
.
body
=
bytes
;
}
@Override
public
int
getCode
()
{
// TODO Auto-generated method stub
return 0;
}
@Override
public
byte
[]
getBody
()
{
// TODO Auto-generated method stub
return null;
}
}
interface
ResponseParse
{
public
void
parseFrom
(
byte
[]
bytes
);
public
void
parseFrom
(
String
str
);
}
class
Application
{
String
name
;
String
packageName
;
String
version
;
int
versionCode
;
double
price
;
long
size
;
long
downloadCount
;
public
long
getDownloadCount
()
{
return
downloadCount
;
}
public
void
setDownloadCount
(
long
downloadCount
)
{
this
.
downloadCount
=
downloadCount
;
}
public
long
getSize
()
{
return
size
;
}
public
void
setSize
(
long
size
)
{
this
.
size
=
size
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getPackageName
()
{
return
packageName
;
}
public
void
setPackageName
(
String
packageName
)
{
this
.
packageName
=
packageName
;
}
public
String
getVersion
()
{
return
version
;
}
public
void
setVersion
(
String
version
)
{
this
.
version
=
version
;
}
public
int
getVersionCode
()
{
return
versionCode
;
}
public
void
setVersionCode
(
int
versionCode
)
{
this
.
versionCode
=
versionCode
;
}
public
double
getPrice
()
{
return
price
;
}
public
void
setPrice
(
double
price
)
{
this
.
price
=
price
;
}
}
class
AppGuessResponse
implements
ResponseParse
{
private
List
<
Application
>
mApplications
=
new
ArrayList
<
Application
>();
private
boolean
mIsFinish
=
false
;
private
boolean
mIsSuccess
=
false
;
private
int
allCount
=
0
;
private
Date
expireDate
=
new
Date
(
System
.
currentTimeMillis
()
+
24
*
60
*
60
*
1000
);
public
Date
getExpireDate
()
{
return
expireDate
;
}
public
void
setExpireDate
(
Date
expireDate
)
{
this
.
expireDate
=
expireDate
;
}
public
int
getAllCount
()
{
return
allCount
;
}
public
void
setAllCount
(
int
allCount
)
{
this
.
allCount
=
allCount
;
}
public
boolean
getIsSuccess
()
{
return
mIsSuccess
;
}
public
Application
getApplicationItem
(
int
i
)
{
return
mApplications
.
get
(
i
);
}
public
int
getApplicationItemCount
()
{
return
mApplications
.
size
();
}
public
List
<
Application
>
getApplicationItemList
()
{
return
mApplications
;
}
public
boolean
isFinish
()
{
return
mIsFinish
;
}
@Override
public
void
parseFrom
(
byte
[]
bytes
)
{
// TODO Auto-generated method stub
}
@Override
public
void
parseFrom
(
String
strJson
)
{
try
{
JSONObject
jsonObject
=
new
JSONObject
(
strJson
);
if
(
jsonObject
.
has
(
"endpage"
))
{
mIsFinish
=
jsonObject
.
getInt
(
"endpage"
)
==
0
?
true
:
false
;
}
else
{
mIsFinish
=
false
;
}
if
(
jsonObject
.
has
(
"allcount"
))
{
allCount
=
jsonObject
.
getInt
(
"allcount"
);
}
if
(
jsonObject
.
has
(
"list"
))
{
JSONArray
jsonArray
=
jsonObject
.
getJSONArray
(
"list"
);
if
(
jsonArray
.
length
()
!=
0
)
{
for
(
int
i
=
0
;
i
<
jsonArray
.
length
();
i
++)
{
JSONObject
jsonObject2
=
jsonArray
.
getJSONObject
(
i
);
Application
app
=
new
Application
();
app
.
setName
(
jsonObject2
.
getString
(
"name"
));
app
.
setPackageName
(
jsonObject2
.
getString
(
"packageName"
));
app
.
setSize
(
jsonObject2
.
getLong
(
"size"
));
app
.
setPrice
(
jsonObject2
.
optDouble
(
"price"
,
0.0
));
app
.
setVersion
(
jsonObject2
.
getString
(
"version"
));
app
.
setVersionCode
(
jsonObject2
.
getInt
(
"versioncode"
));
if
(
jsonObject2
.
has
(
"downloadCount"
))
{
app
.
setDownloadCount
(
jsonObject2
.
optLong
(
"downloadCount"
,
0
));
}
mApplications
.
add
(
app
);
}
}
}
mIsSuccess
=
true
;
}
catch
(
JSONException
e
)
{
mIsSuccess
=
false
;
}
}
更多推荐


所有评论(0)