浏览 6337 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-06
TVO.java代码如下 package demo; import java.util.*; import com.easylotto.lottobar.bean.BaseEntity; import com.easylotto.lottobar.bean.ReqCommandVO; public class TVO extends BaseEntity{ private String tname; private List<Person> rcvoList; private Map map; public List<Person> getRcvoList() { return rcvoList; } public void setRcvoList(List<Person> rcvoList) { this.rcvoList = rcvoList; } public String getTname() { return tname; } public void setTname(String tname) { this.tname = tname; } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } } Person.java如下 package demo; public class Person { private String name; private String age; public Person(String name,String age){ this.name=name; this.age=age; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 测试类如下: package demo; import net.sf.json.*; import java.util.*; import com.easylotto.lottobar.bean.ReqCommandVO; import com.easylotto.lottobar.bean.SocketCommandEntity; /** * Json使用测试类 * @author peidw * */ public class JsonDemo { public String JsonStr2Object(){ String str="{'map':{'a2':'A2','a1':'A1'},'rcvoList':[{'age':'20','name':'小裴'},{'age':'58','name':'小庞'}],'tname':'xxname'}"; JSONObject jo=JSONObject.fromObject(str); TVO sce=null; if(jo!=null){ sce=(TVO)jo.toBean(jo, TVO.class); List alist=sce.getRcvoList(); System.out.println(alist.size()); Person rcvo=null; for(int i=0;i<alist.size();i++){ rcvo=(Person)alist.get(i); System.out.print(rcvo.getName()+"-"+rcvo.getAge()); } } return "测试"; } public void Object2JsonStr(){ TVO tvo=new TVO(); tvo.setTname("xxname"); List <Person>a=new ArrayList(); a.add(new Person("小裴","20")); a.add(new Person("小庞","58")); tvo.setRcvoList(a); Map map=new HashMap(); map.put("a1", "A1"); map.put("a2", "A2"); tvo.setMap(map); JSONObject jo=JSONObject.fromObject(tvo); System.out.println(jo); } public static void main(String[] args){ JsonDemo jd=new JsonDemo(); jd.JsonStr2Object(); //jd.Object2JsonStr(); } } 出现的异常如下 2 Exception in thread "main" java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean at demo.JsonDemo.JsonStr2Object(JsonDemo.java:26) at demo.JsonDemo.main(JsonDemo.java:53) 使用的是json-lib-2.2.1-jdk15.jar包,请问这是怎么回事,怎么解决? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-03-07
这个问题有两个地方值得考虑:
1、一个就是json-lib好像是使用反射实现的,那你的Person类如果没有无参数的构造方法的话,很危险; 2、在你的转化的代码上并没有告诉程序把rcvoList里的数据为何种类型 为此正确的做法是,为Person添加无参数的构造方法,同时修改代码为: if(jo!=null){ Map<String, Class> m = new HashMap<String, Class>(); m.put("rcvoList", Person.class); sce=(TVO)JSONObject.toBean(jo, TVO.class, m); 这样应该就OK了………… |
|
返回顶楼 | |