JSON 对象net.sf.ezmorph.bean.MorphDynaBean@3d92f1 解决办法
net.sf.ezmorph.bean.MorphDynaBean@3d92f1
是 json-lib 中的一个内置对象,当对象缺省的时候,就用这个对象接收。你也可以用它,但是我们往往是需要返回我们自己的实体,或者自己的泛型集合。
net.sf.ezmorph.bean.MorphDynaBean@3d92f1的形成
下面是一个对象实体,然后answers
是一个List<SOAskAnswers>
public class SOAsk implements Serializable{
private static final long serialVersionUID = 1L;
/**回答集合*/
private List<SOAskAnswers> answers = new ArrayList<SOAskAnswers>();
/**分类*/
private String category;
/**分类名称*/
private String categoryName;
/**创建日期*/
private String date;
/**seo - 描述*/
private String description;
/**seo - 关键词*/
private String keywords;
/**来源 */
private String from ;
/**数据ID,url*/
private String id;
/**问题描述*/
private String question;
/**浏览次数*/
private long readCount = 0 ;
/**标题*/
private String title;
/**用户ID*/
private String userId;
/**用户名称*/
private String userName;
/**状态。0:没满意答案,1:有满意答案*/
private int status = 0;
//TODO getter & setter
}
JSON 反射对象的时候,集合对象就出现了net.sf.ezmorph.bean.MorphDynaBean@3d92f1
//查询返回一个JSON(map),然后反射回来对象,其中有一个属性就是集合。
List<SOAsk> list = new ArrayList<SOAsk>();
for (SearchHit searchHit : hits) {
Map<String, Object> source = searchHit.getSource();
JsonConfig config = new JsonConfig();
//设置对象class
config.setRootClass(SOAsk.class);
SOAsk entity = (SOAsk)JSONObject.toBean(JSONObject.fromObject(source) , config);
list.add(entity);
}
解决办法:
//查询返回一个JSON(map),然后反射回来对象,其中有一个属性就是集合。
List<SOAsk> list = new ArrayList<SOAsk>();
for (SearchHit searchHit : hits) {
Map<String, Object> source = searchHit.getSource();
JsonConfig config = new JsonConfig();
//设置对象class
config.setRootClass(SOAsk.class);
//键值对的设置对象Class
Map<String,Class<?>> classMap = new HashMap<String, Class<?>>();
//设置集合List<SOAskAnswers> answers = new ArrayList<SOAskAnswers>() 的泛型类型为SOAskAnswers
classMap.put("answers", SOAskAnswers.class);
//这里可以设置多个,如果当前对象里有很多的话 。。。
//设置进去
config.setClassMap(classMap);
SOAsk entity = (SOAsk)JSONObject.toBean(JSONObject.fromObject(source) , config);
list.add(entity);
}
这就OK了。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/186.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。