<span style="font-family: Arial,Helvetica,sans-serif; background-color: rgb(255,255,255);">阅读过jfinal源码和fastjson支持的解析类型的人应该都知道</span>
jfinal的model是将所有数据存在一个map中,如下是jfinal中model存储数据的地方
/** * Attributes of this model */ private Map<String,Object> attrs = getAttrsMap();
解决方案一:
将model中添加好所有的属性,按照正常的对象来承载我们的数据,再做相应的dao操作
public class Contacts extends Model<Contacts>{ /** * */ private static final long serialVersionUID = 1L; public static Contacts dao = new Contacts(); /** 主键id */ private int id; /** 姓名 */ private String name; /** 号码 */ private String number; /** 组别 */ private String group; /** 备注 */ private String remark; public int getId() { return id; } public void setId(int id) { set("id",id); this.id = id; } public String getName() { return name; } public void setName(String name) { set("name",name); this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { set("number",number); this.number = number; } public String getGroup() { return group; } public void setGroup(String group) { set("group",group); this.group = group; } public String getRemark() { return remark; } public void setRemark(String remark) { set("remark",remark); this.remark = remark; } }
解决方案二:
序列化的时候我们需要得到我们的model中的数据,在model中有一个protected类型的getAttrs方法,所以在我们的controller中无法直接调用
我们在model中写一个public类型的方法来调用这个这个方法
public class Contacts extends Model<Contacts>{ /** * private static final long serialVersionUID = 1L; public static Contacts dao = new Contacts(); public Map<String,Object> getAll() { return this.getAttrs(); } }<span style="font-family: Arial,sans-serif;"> </span>在我们的controller中序列化的代码
// 拼接json StringBuffer jsonResult = new StringBuffer("["); for(int i = 0; i < listContacts.size(); i++) { jsonResult.append(JSON.toJSONString(listContacts.get(i).getAll())); if( !(i == listContacts.size()-1) ){ jsonResult.append(","); } } jsonResult.append("]");
反序列化的代码,(这里我们以删除为例)
List<Map<String,Object>> listMap = JSON.parSEObject(jsonStr,new TypeReference<List<Map<String,Object>>>(){}); for(Map<String,Object> list: listMap) { <pre name="code" class="java"><span style="white-space:pre"> </span>Contacts.dao.setAttrs(list).delete();}
*/