博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
List<Map<String, Object>> 与 json 互转
阅读量:5075 次
发布时间:2019-06-12

本文共 2484 字,大约阅读时间需要 8 分钟。

近期做指纹识别,需要用到缓存文件,数据量并不大,用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
> 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
> listw = toListMap(line.toString()); //此行转换
toListMap方法
public static List
> toListMap(String json){ List
list =JSON.parseArray(json); List< Map
> listw = new ArrayList
>(); for (Object object : list){ Map
ageMap = new HashMap
(); Map
ret = (Map
) 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;    }

 

转载于:https://www.cnblogs.com/remember-forget/p/10454738.html

你可能感兴趣的文章
bzoj2662冻结
查看>>
C#委托总结-匿名方法&Lambda表达式
查看>>
python3实现mysql导出数据到文件
查看>>
JavaScript encodeURI() 函数
查看>>
SimpleDateFormat关于时间类的一些常用处理
查看>>
遗传算法示例
查看>>
高校表白App-团队冲刺第二天
查看>>
学生信息管理系统--基于jsp技术和MySQL的简单增删改查
查看>>
使用cocoscreator + node.js + websocket实现简单的聊天服务
查看>>
什么是预测区间,置信区间与预测区间二者的异同是什么?
查看>>
asp.net (jquery easy-ui datagrid)通用Excel文件导出(NPOI)
查看>>
ubuntuPC机安装JLink驱动
查看>>
快速排序
查看>>
我的第一篇随笔
查看>>
设置Eclipse/MyEclipse中编辑界面点击任何文件后Package Explorer导航自动定位该文件...
查看>>
多阶段决策问题
查看>>
C# write in pdf file
查看>>
jQuery.Pin钉住某个元素
查看>>
[笔记][FPGA]有限状态机FSM学习笔记(三)
查看>>
Hotel Check in & check out
查看>>