在平常的开发中,我们经常会遇到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.
