1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
[
{
"id"
:
6378
,
"title"
:
"test"
,
"score"
:
0
,
"description"
:
"test"
,
"time"
:
1411963174
},
{
"id"
:
6142
,
"title"
:
"微电影多角度拍摄技巧(三)"
,
"score"
:
0
,
"description"
:
""
,
"time"
:
1411530850
},
{
"id"
:
6141
,
"title"
:
"微电影多角度拍摄技巧(一)"
,
"score"
:
0
,
"description"
:
""
,
"time"
:
1411530835
},
{
"id"
:
6140
,
"title"
:
"微电影多角度拍摄技巧(二)"
,
"score"
:
0
,
"description"
:
""
,
"time"
:
1411530552
},
{
"id"
:
4355
,
"title"
:
"施比受,更有福"
,
"score"
:
0
,
"description"
:
"一位老人用自己的一半时间去帮助他人,赠予帮助,收获快乐"
,
"time"
:
1411530082
},
{
"id"
:
4354
,
"title"
:
"父子时光之旅"
,
"score"
:
0
,
"description"
:
"当父亲老去,忙于生活的男人没有时间照顾体弱的父亲,于是,带上父亲上路吧,带他重走当年他走过无数遍的那段旅程"
,
"time"
:
1411529699
}
]
|
对于这一种json数据,使用fastjson进行解析的时候,调用方法之前应该先写出其对应的bean.java(我想你已经做过了);上面的json数据对应的bean是这样的,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
public
class
NewMoviesBean {
private
int
id;
private
String title;
private
String img;
private
String score;
private
String description;
private
int
time;
public
int
getId() {
return
id;
}
public
void
setId(
int
id) {
this
.id = id;
}
public
String getTitle() {
return
title;
}
public
void
setTitle(String title) {
this
.title = title;
}
public
String getImg() {
return
img;
}
public
void
setImg(String img) {
this
.img = img;
}
public
String getScore() {
return
score;
}
public
void
setScore(String score) {
this
.score = score;
}
public
String getDescription() {
return
description;
}
public
void
setDescription(String description) {
this
.description = description;
}
public
int
getTime() {
return
time;
}
public
void
setTime(
int
time) {
this
.time = time;
}
public
NewMoviesBean(
int
id, String title, String img, String score,
String description,
int
time) {
super
();
this
.id = id;
this
.title = title;
this
.img = img;
this
.score = score;
this
.description = description;
this
.time = time;
}
public
NewMoviesBean() {
super
();
}
@Override
public
String toString() {
return
"NewMoviesBean [id="
+ id +
", title="
+ title +
", img="
+ img
+
", score="
+ score +
", description="
+ description
+
", time="
+ time +
"]"
;
}
}
|
那么对应的解析方法是这样的:
1
|
JSON.parseArray(json, NewMoviesBean.
class
);
|
1
|
为甚么回事这种解析方式呢?因为,分析整个json数据的格式我们能发现,最外层是中括号
"[ ]"
,内侧是大括号
"{ }"
;中括号说明整个json数据为一个数组类型,其中的大括号说明是数组中的元素;说明整个就是一个JSONArray,JSONArray中元素又是一个个的JSONObject。
|
另一种的解析方式:json数据是这样的,
1
2
3
4
|
{
"type"
: [
"恐怖"
,
"剧情"
]},
|
分析这种形式,大括号里面是小括号。也即是数组整体是通过键值对的形式呈现的。那么最外层就是一个JSONObject,KEY对应的就是JSONArray。应该这样:
1
2
3
4
5
|
JSONArray jsonArrayType = JSONObject.getJSONArray(
"type"
);
String[] type =
new
String[jsonArrayType.size()];
for
(
int
j =
0
; j < jsonArrayType.size(); j++) {
type[j] = (String)jsonArrayType.get(j);
}
|
这样就能够解析出想要的数据。
与上面类似的另一种解析:json数据是这样的:
1
2
3
4
5
6
7
|
这种形式,外层大括号里面是一个键KEY对应了另一个大括号元素,那么其最外层是一个JSONObject;内层KEY对应的也是一个JSONObject。
当然也可以先创建开一个bean:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
public
class
MoviedefinitionBean {
private
String normalP;
private
String hightP;
private
String superP;
public
String getNormalP() {
return
normalP;
}
public
void
setNormalP(String normalP) {
this
.normalP = normalP;
}
public
String getHightP() {
return
hightP;
}
public
void
setHightP(String hightP) {
this
.hightP = hightP;
}
public
String getSuperP() {
return
superP;
}
public
void
setSuperP(String superP) {
this
.superP = superP;
}
public
MoviedefinitionBean(String normalP, String hightP, String superP) {
super
();
this
.normalP = normalP;
this
.hightP = hightP;
this
.superP = superP;
}
public
MoviedefinitionBean() {
super
();
}
@Override
public
String toString() {
return
"MoviedefinitionBean [normalP="
+ normalP +
", hightP="
+ hightP
+
", superP="
+ superP +
"]"
;
}
}
|
然后对此做出解析:
1
2
3
4
5
|
JSONObject jsonObjectDefination = jsonObject.getJSONObject(
"playurl"
);
String normalP = jsonObjectDefination.getString(
"360P"
);
String hightP = jsonObjectDefination.getString(
"480P"
);
String superP = jsonObjectDefination.getString(
"720P"
);
playurl =
new
MoviedefinitionBean(normalP, hightP, superP);
|