json文件生成与解析

最近在做一个省市区数据的三级联动,数据量太多,而且数据基本很少变化,每次从数据库获取会有很大压力,由于诸多原因,每次都是全部查询去遍历,相信很多人第一时间想到的是用缓存,没错,缓存确实也可以解决这个问题,但是这里我换了一种方式,直接生成json文件,后续去需要数据直接解析json文件的数据返回即可,在此只是利用省市区举个例子,具体问题具体分析,重点在于如何使用java实现json文件的生成与解析
对于省市区三级联动的功能,有很多的方法能够减少对数据库的访问,来达到想要的效果

方式:
1. 直接前端使用省市区组件
2. 加入缓存
3. 懒加载模式,根据选中的数据查询对应下级数据
4. json文件生成与解析
5. 其它更多…

在这只是讲解下第四点

CreateFileUtil
json生成解析工具类

public class CreateFileUtil {
 /**
  * 生成.json格式文件
  */
 public static boolean createJsonFile(String jsonString, String filePath, String fileName) {
     // 标记文件生成是否成功
     boolean flag = true;

     // 拼接文件完整路径
     //String fullPath = filePath + File.separator + fileName + ".json";
     String fullPath = filePath +  fileName + ".json";

     // 生成json格式文件
     try {
         // 保证创建一个新文件
         File file = new File(fullPath);
         if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录
             file.getParentFile().mkdirs();
         }
         if (file.exists()) { // 如果已存在,删除旧文件
             file.delete();
         }
         file.createNewFile();

         // 格式化json字符串
         jsonString = JsonFormatTool.formatJson(jsonString);
         // 将格式化后的字符串写入文件
         Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
         write.write(jsonString);
         write.flush();
         write.close();
     } catch (Exception e) {
         flag = false;
         e.printStackTrace();
     }

     // 返回是否成功的标记
     return flag;
 }

 /**
  * 读取json文件数据
  */
 public static String fileToJson(String path){
     String jsonStr = "";
     try {
         File jsonFile = new File(path);
         Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "utf-8");
         int ch = 0;
         StringBuffer sb = new StringBuffer();
         while ((ch = reader.read()) != -1) {
             sb.append((char) ch);
         }
         reader.close();
         jsonStr = sb.toString();
         return jsonStr;
     } catch (Exception ex) {
         ex.printStackTrace();
         return null;
     }
 }
}

直接调用即可

效果
json文件效果:
在这里插入图片描述
解析数据效果:
在这里插入图片描述
如有问题,欢迎留言!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值