异步加载获取集合转为json页面输出
导包:
流程:由页面发送ajax异步请求后台查询数据库并返回页面进行数据填充
后台对集合的处理:
List<BaseDict> list = baseDictService.findByTypeCode(baseDict.getDict_type_code());
JsonConfig jsonConfig = new JsonConfig();
//指定对哪些字段不进行处理(可选操作)
jsonConfig.setExcludes(new String[]{"dict_sort","dict_enable","dict_memo"});
//json转换
JSONArray jsonArray = JSONArray.fromObject(list,jsonConfig);
//返回json
ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8");
ServletActionContext.getResponse().getWriter().println(jsonArray.toString());
前台发送请求并回调接收填充数据:
$(function(){
$.post("${pageContext.request.contextPath}/baseDict_findByTypeCode.action",{"dict_type_code":"002"},function(data){
$.each(data,function(i,n){
$("#cust_source").append("<option value='"+n.dict_id+"'>"+n.dict_item_name+"</option>");
});
},"json");
});
设置JSON屏蔽某个字段的转化
对于某些字段不进行转换处理还可以在实体类中定义
//不转换json字符串
@JSONField(serialize=false)
private String pwd;//登陆密码
处理fastjson循环引用问题
JSON日期格式的处理
返回的json对象属性加前缀
/**
* //{"name":"管理员组","tele":"000011","uuid":1}
* @param jsonString JSON数据字符串
* @param prefix 要加上的前缀
* @return {"t.name":"管理员组","t.tele":"000011","t.uuid":1}
*/
public String mapJson(String jsonString, String prefix){
Map<String, Object> map = JSON.parseObject(jsonString);
//存储key加上前缀后的值
Map<String, Object> dataMap = new HashMap<String, Object>();
//给每key值加上前缀
for(String key : map.keySet()){
if(map.get(key) instanceof Map){
//key值进行拼接
Map<String,Object> m2 = (Map<String,Object>)map.get(key);
for(String key2 : m2.keySet()){
dataMap.put(prefix + "." + key + "." + key2, m2.get(key2));
}
}else{
dataMap.put(prefix + "." + key, map.get(key));
}
}
return JSON.toJSONString(dataMap);
}
后台接收json数据存储
需求:提交订单功能涉及订单表和订单明细表,前台使用EasyUI框架的table标签向后台传递多行数据(json类型的list数据)
保存订单业务: