List<Map<String, Object>> 与 json 互转
近期做指纹识别,需要用到缓存文件,数据量并不大,用redis不合适,所以用到了txt文件。
思路是 1、定时查询指纹,存到txt缓存文件中。
2、新增或删除指纹时,查询指纹,存到txt缓存文件中。
3、需要对比查询指纹时,从txt缓存文件中查找,若缓存文件为空,则从数据库查找。
实现后,速度从9S提升到了最快0.7S。
期间用到了 List<Map<String, Object>> 转为 json 存到txt文件中,txt 文件中的 json 内容转为 List<Map<String, Object>> 。
转换方式如下:
1、List<Map<String, Object>> 转为 json(String)
List<Map<String, Object>> list= openDao.queryForList(map); String str = JSON.toJSONString(list); //此行转换 caChe.writeFile(finerPath,finerPath+"finerCaChe.txt",str);
writeFile 方法
/**
* 写入TXT文件
*/
public static void writeFile(String dirPath,String path,String txt) {
try {
judeDirExists(new File(dirPath)); File writeName = new File(path); // 相对路径,如果没有则要建立一个新的output.txt文件
writeName.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖
try (FileWriter writer = new FileWriter(writeName);
BufferedWriter out = new BufferedWriter(writer)
) {
out.write(txt); // \r\n即为换行
out.flush(); // 把缓存区内容压入文件
}
} catch (IOException e) {
e.printStackTrace();
}
}
2、 json 转为 List<Map<String, Object>>
StringBuilder line = readFile(path); //读取txt文本内容
List< Map<String,Object>> listw = toListMap(line.toString()); //此行转换
toListMap方法
public static List<Map<String, Object>> toListMap(String json){
List<Object> list =JSON.parseArray(json); List< Map<String,Object>> listw = new ArrayList<Map<String,Object>>();
for (Object object : list){
Map<String,Object> ageMap = new HashMap<String,Object>();
Map <String,Object> ret = (Map<String, Object>) object;//取出list里面的值转为map
listw.add(ret);
}
return listw; }
readFile方法
/**
* 读入TXT文件
*/
public static StringBuilder readFile(String path) {
String pathname = path; // 绝对路径或相对路径都可以,写入文件时演示相对路径,读取以上路径的input.txt文件
//防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw;
//不关闭文件会导致资源的泄露,读写文件都同理
//Java7的try-with-resources可以优雅关闭文件,异常时自动关闭文件;详细解读https://stackoverflow.com/a/12665271 StringBuilder txt =new StringBuilder("");
try (FileReader reader = new FileReader(pathname);
BufferedReader br = new BufferedReader(reader) // 建立一个对象,它把文件内容转成计算机能读懂的语言
) {
String line;
while ((line = br.readLine()) != null) {
// 一次读入一行数据
txt.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return txt;
}
List<Map<String, Object>> 与 json 互转的更多相关文章
- javaBean与Map<String,Object>互转
背景:有时候想不通阿帕奇的BeanUtils是怎么进行map和Bean互相转化的. 工作闲暇之余,自己写个一小段代码,一探究竟,试试才发现,原来一切并非我们想的那么什么和复杂. 注:这里只是简单实例, ...
- json遍历,List<Map<String,Object>>遍历
js怎样给input对象追加属性,如disabled $(":textbox").attr({"disabled":true}); List<Map< ...
- fastjson 将json字符串转化成List<Map<String, Object>>
亲测可行,如下: JSON.parseObject(jsonstr, new TypeReference<List<Map<String, Object>>>() ...
- 用第三方工具类,将JavaBean、List、Map<String,Object>转成JSON文本
导入第三方jar包: >commons-beanutils-1.7.0.jar >commons-collections-3.1.jar >commons-lang-2.5.jar ...
- Map<String, Object>转Object,Object转 Map<String, Object>
Map转Object import com.alibaba.fastjson.JSON; Map<String, Object> boneAgeOrderMap=boneAgeOrderS ...
- String, JSONArray , JSONObject ,Map<String, Object> 与对象
String pic = "[{\"picServiceUrl\": \"0f4bb44afb2e48d48b786d3bbdeec283/20180408/6 ...
- String 转 List<Map<String, Object>>
public static List<Map<String, Object>> toListMap(String json){ List<Object> list ...
- Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常
前言 今天看群里小伙伴问了一个非常有意思的问题: 使用 Map<String,Object> 对象接收前端传递的参数,在后端取参时,因为接口文档中明确该字段类型为 Long ,所以对接收的 ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
随机推荐
- Hibernate Query Language查询:
Hibernate Query Language查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供 ...
- 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆
为了能以任意点为圆心画圆,我们可以把圆心先设为视点(相当于于将其平移到坐标原点),然后通过中点法扫描转换后,再恢复原来的视点(相当于将圆心平移回原来的位置). 圆心位于原点的圆有四条对称轴x=0,y= ...
- python中时间操作总结
一.time 二.datetime 1.获取当前系统时间 datenow = datetime.datetime.now() 2.将datetime格式的时间转换成str datenow = date ...
- 【转】C# URL短地址压缩算法及短网址原理解析
这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下 短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaur ...
- web开发之微信公众号---微信公众好开发
--------------------------------------time:2015/11/5 ----------------------------------------------- ...
- linux -- 进程的查看、进程id的获取、进程的杀死
进程查看 ps ax : 显示当前系统进程的列表 ps aux : 显示当前系统进程详细列表以及进程用户 ps ax|less : 如果输出过长,可能添加管道命令 less查看具体进程, 如:ps a ...
- [转]Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- log4j配置 logging.xml (转载)
Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...
- 结构型模式概述(Structural Pattern)
结构型模式可以描述两种不同的东西:类与类的实例.结构型模式可以分为类结构型模式和对象结构型模式. 类结构型模式关心类的组合,可以由多个类组合成一个更大的系统,在类结构型模式中只存在继承关系和实现关系: ...
- Nginx伪静态配置和常用Rewrite伪静态规则集锦
伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面我来介绍nginx 伪静态配置方法 nginx里使用伪静态是直接在nginx.conf ...