Jfinal Model和Record输出json驼峰命名转换

在开发项目的时候,数据库的字段命名一般都是带下划线的,如果是oracle的话还可能是大写,所以jfinal框架在输出json的时候会有一些不爽,假如我们开发接口需要提供给用户的是驼峰命名的json,那该怎么处理呢?

写一个工具类:

import com.jfinal.core.Controller;
import com.jfinal.kit.JsonKit;
import com.jfinal.kit.Ret;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;

import org.apache.commons.lang3.StringUtils;
import java.util.List;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

/**
* Created by yongchao on 2017/2/22.
*/
public class ControllerUtils {

/**
* 乐观锁验证
*
* @param controller
* @param tableName 数据库表名
* @return
*/
public static String validateIdAndVersion(Controller controller, String tableName) {
String id = controller.getPara(“id”);
if (StrKit.isBlank(id)) {
id = controller.getPara(“id_”);
}
if (StrKit.isBlank(id))
return null;
String version = controller.getPara(“version”);
if (StrKit.isBlank(version)) {
version = controller.getPara(“rev”);
}
if (null == version)
return null;
if (!StringUtils.isNumeric(version)) {
return “version参数只能是数字!”;
}
Record record = Db.findById(tableName, id);
if (null == record) {
return “根据id查询不到数据!”;
}
if (null == record.get(“VERSION”))
return null;
if (record.get(“VERSION”) != Integer.valueOf(version)) {
return “表单数据版本号和数据库数据版本号不一致,可能数据已经被其他人修改,请重新编辑!”;
}
return null;
}

/**
* 把model转为map,驼峰命名
*
* @param model
* @return
*/
public static Map<String, Object> modelToCamelCaseMap(Model model) {
if (null == model) {
return null;
}
String[] keys = model._getAttrNames();
Map<String, Object> map = new HashMap<>();
for (String key : keys) {
Object value = model.get(key);
key = StrKit.toCamelCase(key.toLowerCase());
//避免输出null的json,过滤掉空值
if(null != value){
map.put(key, value);
}

}
return map;
}

/**
* Record转为Map,驼峰命名
*
* @param record
* @return
*/
public static Map<String, Object> recordToCamelCaseMap(Record record) {
if (null == record) {
return null;
}
String[] keys = record.getColumnNames();
Map<String, Object> map = new HashMap<>();
for (String key : keys) {
Object value = record.get(key);
key = StrKit.toCamelCase(key.toLowerCase());
//避免输出null的json,过滤掉空值
if(null != value){
map.put(key, value);
}
}
return map;
}

/**
* List<Record>转为List<Map<String, Object>>,驼峰命名
*
* @param records
* @return
*/
public static List<Map<String, Object>> recordsToCamelCaseMaps(List<Record> records) {
List<Map<String, Object>> maps = new ArrayList<>();
for (Record record : records) {
maps.add(recordToCamelCaseMap(record));
}
return maps;
}

/**
* List<? extends Model>转为List<Map<String, Object>>,驼峰命名
*
* @param models
* @return
*/
public static List<Map<String, Object>> modelsToCamelCaseMaps(List<? extends Model> models) {
List<Map<String, Object>> maps = new ArrayList<>();
for (Model model : models) {
maps.add(modelToCamelCaseMap(model));
}
return maps;
}

/**
* Page<Record>转为Page<Map<String, Object>>,驼峰命名
*
* @param records
* @return
*/
public static Page<Map<String, Object>> recordsToCamelCaseMaps(Page<Record> records) {
List<Record> recordList = records.getList();
List<Map<String, Object>> maps = new ArrayList<>();
for (Record record : recordList) {
maps.add(recordToCamelCaseMap(record));
}
return new Page<Map<String, Object>>(maps, records.getPageNumber(), records.getPageSize(),
records.getTotalPage(), records.getTotalRow());
}

/**
* Page<Page<? extends Model>转为Page<Map<String, Object>>,驼峰命名
*
* @param models
* @return
*/
public static Page<Map<String, Object>> modelsToCamelCaseMaps(Page<? extends Model> models) {
List<? extends Model> modelList = models.getList();
List<Map<String, Object>> maps = new ArrayList<>();
for (Model model : modelList) {
maps.add(modelToCamelCaseMap(model));
}
return new Page<Map<String, Object>>(maps, models.getPageNumber(), models.getPageSize(), models.getTotalPage(),
models.getTotalRow());
}

}

 

使用方法:

List<Bean>类型数据的json驼峰命名转换:ControllerUtils.modelToCamelCaseMap方法即可
Page<Record>类型数据的json驼峰命名转换:用ControllerUtils. recordsToCamelCaseMaps方法即可。

 

转载于:https://my.oschina.net/yunte/blog/1528080

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值