这篇文章主要介绍了使用ajax或easyui等框架时的json-lib的处理方案 ,需要的朋友可以参考下
无论是使用ajax还是使用easyui等框架,后台向前台输出数据时都涉及到json处理的问题,这里介绍两种处理方法,第一种是手动配置json的处理方法,另一种使用json-lib的处理方案。普通手动配置方法比较笨拙,每次需要根据字段名逐个配置,因此也无法再其他对象上使用,降低了代码的重用性,使用json-lib工具可以实现自动处理,针对不同的对象又不同的处理措施,大大提高了处理效率和代码的重用性,以下分别根据案例介绍两种方法的过程:
方法一:普通方法,通过手动配置转型的过程,以easyui的请求方法为例,前台通过dategrid向后台请求用户列表数据,数据中存在普通字段(int、String)数据,也有日期(date)数据,
jsp页面:
|
编号 |
真实姓名 |
用户名 |
密码 |
性别 |
出生日期 |
身份证 |
邮件 |
联系电话 |
家庭地址 |
*******************************************************************************************************************************************************
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
action层:
public void list()throws Exception{
PageBean pageBean=new PageBean(Integer.parseInt(page), Integer.parseInt(rows));
List userList=userService.findUserList(s_user, pageBean);
Long total=userService.getUserCount(s_user);
JSONObject result=new JSONObject();
JSONArray jsonArray=JsonUtil.formatUserListToJsonArray(userList);
//easyui接收属性为rows(数据内容)和total(总记录数)
result.put("rows", jsonArray);
result.put("total", total);
//获取response对象
ResponseUtil.write(ServletActionContext.getResponse(), result);
}
*******************************************************************************************************************************************************
util工具:
public class JsonUtil {
/**
* 将List结果集转化为JsonArray
* @param gradeService
* @param stuList
* @return
* @throws Exception
*/
public static JSONArray formatUserListToJsonArray(List userList)throws Exception{
JSONArray array=new JSONArray();
for(int i=0;i
方法二:使用jsonLib工具完成处理,以easyui的请求方法为例,前台通过dategrid向后台请求商品列表数据,数据中存在普通字段(int、String)数据,也有日期(date)数据,同时商品对象(Product)还级联了类别对象(ProductType)
jsp页面:
|
编号 |
商品图片 |
商品名称 |
价格 |
库存 |
所属商品类id |
所属商品类 |
描述 |
上架时间 |
*******************************************************************************************************************************************************
action层:
public void list() throws Exception{
PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));
List productList=productService.getProducts(s_product, pageBean);
long total=productService.getProductCount(s_product);
//使用jsonLib工具将list转为json
JsonConfig jsonConfig=new JsonConfig();
jsonConfig.setExcludes(new String[]{"orderProductList"}); //非字符串对象不予处理
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd")); //处理日期
jsonConfig.registerJsonValueProcessor(ProductType.class,new ObjectJsonValueProcessor(new String[]{"id","name"}, ProductType.class)); //处理类别list对象
JSONArray rows=JSONArray.fromObject(productList, jsonConfig);
JSONObject result=new JSONObject();
result.put("rows", rows);
result.put("total", total);
ResponseUtil.write(ServletActionContext.getResponse(), result);
}
*******************************************************************************************************************************************************
util工具:
/**
* json-lib 日期处理类
* @author Administrator
*
*/
public class DateJsonValueProcessor implements JsonValueProcessor{
private String format;
public DateJsonValueProcessor(String format){
this.format = format;
}
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
// TODO Auto-generated method stub
return null;
}
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
if(value == null)
{
return "";
}
if(value instanceof java.sql.Timestamp)
{
String str = new SimpleDateFormat(format).format((java.sql.Timestamp)value);
return str;
}
if (value instanceof java.util.Date)
{
String str = new SimpleDateFormat(format).format((java.util.Date) value);
return str;
}
return value.toString();
}
}
/**
* 解决对象级联问题
* @author Administrator
*
*/
public class ObjectJsonValueProcessor implements JsonValueProcessor{
/**
* 保留的字段
*/
private String[] properties;
/**
* 处理类型
*/
private Class> clazz;
/**
* 构造方法
* @param properties
* @param clazz
*/
public ObjectJsonValueProcessor(String[] properties,Class> clazz){
this.properties = properties;
this.clazz =clazz;
}
public Object processArrayValue(Object arg0, JsonConfig arg1) {
// TODO Auto-generated method stub
return null;
}
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
PropertyDescriptor pd = null;
Method method = null;
StringBuffer json = new StringBuffer("{");
try{
for(int i=0;i
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
JS如何实现Ajax的请求函数
php bootstrapajax表单提交
ajax实现简单实时验证功能