您的位置:首页 > 编程语言 > Java开发

java 反射实现javabean转json

2014-07-07 17:13 351 查看

1. [文件] ObjectToJson.java ~ 2KB 下载(39) 跳至 [1] [2] [3] [4] [全屏预览]

01
package
com.ObjectToJson;
02
03
import
java.lang.reflect.Field;
04
import
java.lang.reflect.InvocationTargetException;
05
import
java.lang.reflect.Method;
06
import
java.util.ArrayList;
07
import
java.util.Iterator;
08
09
public
class
ObjectToJson
{
10
 
11
 
12
public
static
String
ObjListToJson(ArrayList<?> list){
13
StringBuilder
build=
new
StringBuilder();
14
//迭代器
15
Iterator<?>
iterator=list.iterator();
16
build.append(
"["
);
17
String
separate=
""
;
18
while
(iterator.hasNext()){
19
build.append(separate);
20
//object转json字符串
21
String
str=ObjToJson(iterator.next());
22
build.append(str);
23
separate=
","
;
24
}
25
build.append(
"]"
);
26
return
build.toString();
27
}
28
 
29
@SuppressWarnings
(
"unchecked"
)
30
public
static
String
ObjToJson(Object obj){
31
StringBuilder
build=
new
StringBuilder();
32
build.append(
"{"
);
33
@SuppressWarnings
(
"rawtypes"
)
34
Class
cla=
null
;
35
try
{
36
//反射加载类
37
cla=Class.forName(obj.getClass().getName());
38
}
catch
(ClassNotFoundException
e) {
39
System.out.println(obj.getClass().toString().concat(
"
未找到这个类"
));
40
e.printStackTrace();
41
return
null
;
42
}
43
 
44
StringBuffer
methodname=
new
StringBuffer();
45
//获取java类的变量
46
Field[]
fields=cla.getDeclaredFields();
47
String
separate=
""
;
48
for
(Field
temp:fields){
49
build.append(separate);
50
build.append(
"\""
);
51
build.append(temp.getName());
52
build.append(
"\":"
);
53
 
54
methodname.append(
"get"
);
55
methodname.append(temp.getName().substring(
0
,
1
).toUpperCase());
56
methodname.append(temp.getName().substring(
1
));
57
 
58
build.append(
"\""
);
59
Method
method=
null
;
60
try
{
61
//获取java的get方法
62
method=cla.getMethod(methodname.toString());
63
}
catch
(NoSuchMethodException
| SecurityException e) {
64
methodname.setLength(
0
);
65
e.printStackTrace();
66
}
67
 
68
try
{
69
//执行get方法,获取变量参数的直。
70
build.append(method.invoke(obj));
71
}
catch
(IllegalAccessException
e) {
72
e.printStackTrace();
73
}
catch
(IllegalArgumentException
e) {
74
e.printStackTrace();
75
}
catch
(InvocationTargetException
e) {
76
e.printStackTrace();
77
}
78
79
build.append(
"\""
);
80
methodname.setLength(
0
);
81
separate=
","
;
82
}
83
 
84
build.append(
"}"
);
85
return
build.toString();
86
}
87
}

2. [文件] Test.java ~ 746B 下载(20)

01
package
com.test;
02
03
import
java.util.ArrayList;
04
05
import
com.ObjectToJson.ObjectToJson;
06
07
public
class
Test
{
08
 
public
static
void
main(String[]
args){
09
 
//数据构建
10
 
ArrayList<User>
list=getlist();
11
 
//数据转换
12
 
String
listjson=ObjectToJson.ObjListToJson((ArrayList<?>)list);
13
 
System.out.println(
"{\"data\":"
+listjson+
"}"
);
14
 
}
15
 
16
 
public
static
ArrayList<User>
getlist(){
17
 
User
user00=
new
User();
18
 
user00.setUserage(
"27"
);
19
 
user00.setUsername(
"smart"
);
20
 
user00.setUsersex(
"man"
);
21
 
22
 
User
user01=
new
User();
23
 
user01.setUserage(
"27"
);
24
 
user01.setUsername(
"smart00"
);
25
 
user01.setUsersex(
"man"
);
26
 
27
 
ArrayList<User>
list=
new
ArrayList<User>();
28
29
 
list.add(user00);
30
 
list.add(user01);
31
 
32
 
return
list;
33
 
}
34
35
}

3. [文件] User.java ~ 494B 下载(20)

01
package
com.test;
02
03
public
class
User
{
04
private
String
username;
05
private
String
usersex;
06
private
String
userage;
07
 
08
public
String
getUsername() {
09
return
username;
10
}
11
public
void
setUsername(String
username) {
12
this
.username
= username;
13
}
14
public
String
getUsersex() {
15
return
usersex;
16
}
17
public
void
setUsersex(String
usersex) {
18
this
.usersex
= usersex;
19
}
20
public
String
getUserage() {
21
return
userage;
22
}
23
public
void
setUserage(String
userage) {
24
this
.userage
= userage;
25
}
26
 
27
28
}

4. [代码]测试结果

1
{
"data"
:[{
"username"
:
"smart"
,
"usersex"
:
"man"
,
"userage"
:
"27"
},{
"username"
:
"smart00"
,
"usersex"
:
"man"
,
"userage"
:
"27"
}]}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: