使用Ajax或Easyui等框架时的Json-lib的处理方案
无论是使用ajax还是使用easyui等框架,后台向前台输出数据时都涉及到json处理的问题,这里介绍两种处理方法,第一种是手动配置json的处理方法,另一种使用json-lib的处理方案。普通手动配置方法比较笨拙,每次需要根据字段名逐个配置,因此也无法再其他对象上使用,降低了代码的重用性,使用json-lib工具可以实现自动处理,针对不同的对象又不同的处理措施,大大提高了处理效率和代码的重用性,以下分别根据案例介绍两种方法的过程:
方法一:普通方法,通过手动配置转型的过程,以easyui的请求方法为例,前台通过dategrid向后台请求用户列表数据,数据中存在普通字段(int、String)数据,也有日期(date)数据,
jsp页面:
编号 真实姓名 用户名 密码 性别 出生日期 身份证 邮件 联系电话 家庭地址
*******************************************************************************************************************************************************
action层:
publicvoidlist()throwsException{
PageBeanpageBean=newPageBean(Integer.parseInt(page),Integer.parseInt(rows));
ListuserList=userService.findUserList(s_user,pageBean);
Longtotal=userService.getUserCount(s_user);
JSONObjectresult=newJSONObject();
JSONArrayjsonArray=JsonUtil.formatUserListToJsonArray(userList);
//easyui接收属性为rows(数据内容)和total(总记录数)
result.put("rows",jsonArray);
result.put("total",total);
//获取response对象
ResponseUtil.write(ServletActionContext.getResponse(),result);
}
*******************************************************************************************************************************************************
util工具:
publicclassJsonUtil{
/**
*将List结果集转化为JsonArray
*@paramgradeService
*@paramstuList
*@return
*@throwsException
*/
publicstaticJSONArrayformatUserListToJsonArray(ListuserList)throwsException{
JSONArrayarray=newJSONArray();
for(inti=0;i
方法二:使用jsonLib工具完成处理,以easyui的请求方法为例,前台通过dategrid向后台请求商品列表数据,数据中存在普通字段(int、String)数据,也有日期(date)数据,同时商品对象(Product)还级联了类别对象(ProductType)
jsp页面:
编号
商品图片
商品名称
价格
库存
所属商品类id
所属商品类
描述
上架时间
*******************************************************************************************************************************************************
action层:
publicvoidlist()throwsException{
PageBeanpageBean=newPageBean(Integer.parseInt(page),Integer.parseInt(rows));
ListproductList=productService.getProducts(s_product,pageBean);
longtotal=productService.getProductCount(s_product);
//使用jsonLib工具将list转为json
JsonConfigjsonConfig=newJsonConfig();
jsonConfig.setExcludes(newString[]{"orderProductList"});//非字符串对象不予处理
jsonConfig.registerJsonValueProcessor(java.util.Date.class,newDateJsonValueProcessor("yyyy-MM-dd"));//处理日期
jsonConfig.registerJsonValueProcessor(ProductType.class,newObjectJsonValueProcessor(newString[]{"id","name"},ProductType.class));//处理类别list对象
JSONArrayrows=JSONArray.fromObject(productList,jsonConfig);
JSONObjectresult=newJSONObject();
result.put("rows",rows);
result.put("total",total);
ResponseUtil.write(ServletActionContext.getResponse(),result);
}
*******************************************************************************************************************************************************
util工具:
/**
*json-lib日期处理类
*@authorAdministrator
*
*/
publicclassDateJsonValueProcessorimplementsJsonValueProcessor{
privateStringformat;
publicDateJsonValueProcessor(Stringformat){
this.format=format;
}
publicObjectprocessArrayValue(Objectvalue,JsonConfigjsonConfig){
//TODOAuto-generatedmethodstub
returnnull;
}
publicObjectprocessObjectValue(Stringkey,Objectvalue,JsonConfigjsonConfig){
if(value==null)
{
return"";
}
if(valueinstanceofjava.sql.Timestamp)
{
Stringstr=newSimpleDateFormat(format).format((java.sql.Timestamp)value);
returnstr;
}
if(valueinstanceofjava.util.Date)
{
Stringstr=newSimpleDateFormat(format).format((java.util.Date)value);
returnstr;
}
returnvalue.toString();
}
}
/**
*解决对象级联问题
*@authorAdministrator
*
*/
publicclassObjectJsonValueProcessorimplementsJsonValueProcessor{
/**
*保留的字段
*/
privateString[]properties;
/**
*处理类型
*/
privateClass>clazz;
/**
*构造方法
*@paramproperties
*@paramclazz
*/
publicObjectJsonValueProcessor(String[]properties,Class>clazz){
this.properties=properties;
this.clazz=clazz;
}
publicObjectprocessArrayValue(Objectarg0,JsonConfigarg1){
//TODOAuto-generatedmethodstub
returnnull;
}
publicObjectprocessObjectValue(Stringkey,Objectvalue,JsonConfigjsonConfig){
PropertyDescriptorpd=null;
Methodmethod=null;
StringBufferjson=newStringBuffer("{");
try{
for(inti=0;i
以上所述是小编给大家介绍的使用Ajax或Easyui等框架时的Json-lib的处理方案,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!