在平常的开发中,我们经常会遇到JSONObject和Bean的互换,JSONArray和List<Bean>的互换,具体的操作可以看下面的小例子。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
class
Test
{
public
static
void
main
(
String
args
[
]
)
{
User
temp
=
new
User
(
)
;
temp
.
setUsername
(
"root"
)
;
temp
.
setPassword
(
"root"
)
;
//JSONObject转换为bean的两种方法:
JSONObject
json
=
JSONObject
.
fromObject
(
temp
)
;
User
user1
=
(
User
)
JSONObject
.
toBean
(
json
,
User
.
class
)
;
JsonConfig
jsonConfig
=
new
JsonConfig
(
)
;
jsonConfig
.
setRootClass
(
User
.
class
)
;
User
user2
=
(
User
)
JSONSerializer
.
toJava
(
json
,
jsonConfig
)
;
//JSONArray转换为List<bean>的两种方法:
JSONArray
userArray
=
JSONArray
.
fromObject
(
"["
+
json
.
toString
(
)
+
"]"
)
;
List
<
User
>
userList1
=
(
List
<
User
>
)
JSONArray
.
toCollection
(
userArray
,
User
.
class
)
;
List
<
User
>
userList2
=
(
List
<
User
>
)
JSONSerializer
.
toJava
(
userArray
,
jsonConfig
)
;
}
}
|
需要注意的是:
User user = (User) JSONObject.toBean(json);
这种写法是会报错的:
Exception in thread "main" java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to User
原因如下所示:
toBean(JSONObject jsonObject, Class beanClass)的含义是:
Creates a bean from a JSONObject, with a specific target class.
toBean(JSONObject jsonObject)的含义是:
Creates a JSONDynaBean from a JSONObject.