您的位置:首页 > Web前端 > JavaScript

用fastjson将数据序列化和反序列化给jfinal的model的方案

2014-10-23 15:31 393 查看
<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, Helvetica, 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();
}



*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: