java如何读写json文件

  在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml、json等)也是一种实现方式,但是这有一个弊端,因为作为静态资源存储在站内势必就导致信息的安全性很低,所以如果采用这种方式则建议记录一些安全要求很低的配置属性,当然最好的做法就是使用redis缓存技术。下面就json文件的读写进行进一步说明。

  1、json通用文件读取方法,这个方法会返回map对象:

   /*** json读取* * @param request* @param path* @return*/public static List<Map> JsonRead(HttpServletRequest request, String path) {List<Map> maps = null;String dir = request.getSession().getServletContext().getRealPath(path);System.out.println(path);System.out.println(dir);if (dir == null) {System.out.println("找不到数据");return null;}try {File file = new File(dir);if (!file.exists()) {file.createNewFile();}String str = FileUtils.readFileToString(file, "UTF-8");maps = (List) JSONArray.fromObject(str);} catch (IOException e) {e.printStackTrace();}return maps;};

  2、json指定文件读取方法,这个方法是针对特定的json文件,返回值也是特定的实体对象:

    首先要先定义实体类(我这里就拿项目中一个demo做示例):  

package com.net.entity;
/*** 系统广告图片* @author zhangdi**/
public class SysAdverImg {private int id;//方便后期数据库拓展private String img11;//首页广告1private String img12;//首页广告2private String img13;//首页广告3private String img21;//积分广告1private String img22;//积分广告2private String img23;//积分广告3private String url11;//首页广告链接1private String url12;//首页广告链接2private String url13;//首页广告链接3private String url21;//积分广告链接1private String url22;//积分广告链接2private String url23;//积分广告链接3public int getId() {return id;}public void setId(int id) {this.id = id;}public String getImg11() {return img11;}public void setImg11(String img11) {this.img11 = img11;}public String getImg12() {return img12;}public void setImg12(String img12) {this.img12 = img12;}public String getImg13() {return img13;}public void setImg13(String img13) {this.img13 = img13;}public String getImg21() {return img21;}public void setImg21(String img21) {this.img21 = img21;}public String getImg22() {return img22;}public void setImg22(String img22) {this.img22 = img22;}public String getImg23() {return img23;}public void setImg23(String img23) {this.img23 = img23;}}

    第二步:针对这个特定实体类来写特定的json文件读取方法:

/** 取出广告图片内容,填充对象*/public SysAdverImg findSysAdverImg(String path) {SysAdverImg config = new SysAdverImg();String sets = ReadFile(path);// 获得json文件的内容
        System.out.println(sets);// 去掉json中的[]sets = sets.substring(1, sets.length() - 1);System.out.println(sets);JSONObject jo = JSONObject.fromObject(sets);// 格式化成json对象
        System.out.println(jo.toString());config.setId(Integer.valueOf(jo.getString("id")));config.setImg11(jo.getString("img11"));config.setImg12(jo.getString("img12"));config.setImg13(jo.getString("img13"));config.setImg21(jo.getString("img21"));config.setImg22(jo.getString("img22"));config.setImg23(jo.getString("img23"));config.setUrl11(jo.getString("url11"));config.setUrl12(jo.getString("url12"));config.setUrl13(jo.getString("url13"));config.setUrl21(jo.getString("url21"));config.setUrl22(jo.getString("url22"));config.setUrl23(jo.getString("url23"));return config;}

    这里调用的ReadFile方法如下:

// 读文件,返回字符串public String ReadFile(String path) {File file = new File(path);BufferedReader reader = null;String laststr = "";try {// System.out.println("以行为单位读取文件内容,一次读一整行:");reader = new BufferedReader(new FileReader(file));String tempString = null;int line = 1;// 一次读入一行,直到读入null为文件结束while ((tempString = reader.readLine()) != null) {// 显示行号System.out.println("line " + line + ": " + tempString);laststr = laststr + tempString;line++;}reader.close();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}return laststr;}

  3、特定的json文件修改(即对json文件进行写的操作)

    首先是编写文件写的通用操作方法:  

    // 把json格式的字符串写到文件public boolean writeFile(String filePath, String sets) {FileWriter fw;try {fw = new FileWriter(filePath);PrintWriter out = new PrintWriter(fw);out.write(sets);out.println();fw.close();out.close();return true;} catch (IOException e) {e.printStackTrace();return false;}}

    再就特定的实体类执行写的操作(这里还是以第二步的实体类为例):

    /*** 系统后台更新广告图片* @param img* @param type* @param request* @param resq* @return     200 更新成功 *                         501 上传图片为空 *                         502 上传类型为空 *                         503 无法读取json文件 *                         504 错误的类型 *                         505 json文件更新失败*                         506 上传链接为空*/@RequestMapping(value="updateAdverImgConfig" ,method=RequestMethod.POST,produces="application/json;charset=utf-8")@ResponseBody
public String updateAdverImgConfig(@RequestParam("img")String img,@RequestParam("url")String url,@RequestParam("type")Integer type,HttpServletRequest request,HttpServletResponse resq){if(img==null||img==""){return "501";//图片为空
        }if(type==null){return "502";//类型为空
        }if(url==null||url==""){return "506";//链接为空
        }//系统路径String pathRoot = request.getSession().getServletContext().getRealPath("");//网站配置路径String baseRoot = jsonUtil.findSysConfig(pathRoot+"/config/config.json").getBaseUrl();//读取出源文件SysAdverImg sai = new SysAdverImg();try {sai = jsonUtil.findSysAdverImg(pathRoot+"/config/adver_img.json");} catch (Exception e) {return "503";//无法读取源文件
        }//处理传过来的base64// 这里处理传过来的广告图片base64if(img!=""||img!=null){//图片的存储路径String newImaPath = File.separator +"img"+File.separator+"imgZip" + File.separator;String path = newImaPath+UtilNet.getRandomNumberString(24)+".jpg";//截取字符串,将data:image/jpg;base64去掉,取剩余的字符串String imgType = img.substring(11, 14);if(imgType.equals("jpe")){img = img.substring(23);}else if(imgType.equals("jpg")||imgType.equals("png")){img = img.substring(22);}else if(imgType.equals("gif")){//data:image/gif;base64,R0limg = img.substring(22);}else{img = img.substring(22);}//进行解码
            ImageBase64Util.GenerateImage(img, path,request);//赋值成绝对路径
            System.out.println(path);path = baseRoot+path;System.out.println(path);// 路径赋值switch (type) {case 0://首页广告1
                sai.setImg11(path);sai.setUrl11(url);break;case 1://首页广告2
                sai.setImg12(path);sai.setUrl12(url);break;case 2://首页广告3
                sai.setImg13(path);sai.setUrl13(url);break;case 3://积分广告1
                sai.setImg21(path);sai.setUrl21(url);break;case 4://积分广告2
                sai.setImg22(path);sai.setUrl22(url);break;case 5://积分广告3
                sai.setImg23(path);sai.setUrl23(url);break;default:return "504";}}//写入json文件中        String config = "[{"+"\n"+" \"" +"id"+"\" "+":"+" \""+sai.getId()+"\","+"\n"+" \"" +"img11"+"\" "+":"+" \""+sai.getImg11()+"\","+"\n"+" \"" +"img12"+"\" "+":"+" \""+sai.getImg12()+"\","+"\n"+" \"" +"img13"+"\" "+":"+" \""+sai.getImg13()+"\","+"\n"+" \"" +"img21"+"\" "+":"+" \""+sai.getImg21()+"\","+"\n"+" \"" +"img22"+"\" "+":"+" \""+sai.getImg22()+"\","+"\n"+" \"" +"img23"+"\" "+":"+" \""+sai.getImg23()+"\","+"\n"+" \"" +"url11"+"\" "+":"+" \""+sai.getUrl11()+"\","+"\n"+" \"" +"url12"+"\" "+":"+" \""+sai.getUrl12()+"\","+"\n"+" \"" +"url13"+"\" "+":"+" \""+sai.getUrl13()+"\","+"\n"+" \"" +"url21"+"\" "+":"+" \""+sai.getUrl21()+"\","+"\n"+" \"" +"url22"+"\" "+":"+" \""+sai.getUrl22()+"\","+"\n"+" \"" +"url23"+"\" "+":"+" \""+sai.getUrl23()+"\""+"\n"+"}]";boolean isUpdate = jsonUtil.writeFile(pathRoot+"/config/adver_img.json", config);if(isUpdate){return "200";}else{return "505";}}
}

至此关于json文件的读写就完成了

posted on 2017-09-25 09:37 <&nbsp/> 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/zhangdiIT/p/7590472.html

java如何读写json文件相关推荐

  1. IDEA Java解析GeoJson.json文件

    IDEA Java解析GeoJson.json文件 一.遇到的问题 1. 无法导入成功 2. org.geotools.StyleFactory is not an ImageIO SPI class ...

  2. java怎样读txt文件_【后端开辟】java怎样读写txt文件?

    java怎样读取txt文件? 1.运用FileInputStream完成读取txt文件内容 2.运用FileOutputStream完成写入txt文件内容 package cn.xiaobing.ut ...

  3. python 读写json文件

    1. python中和json读写相关的主要是json模块的以下四个函数: dumps() 将一个python对象编码为json对象 loads() 讲一个json对象解析为python对象 dump ...

  4. java上传json文件

    java 上传json文件并解析 fastjson <dependency><groupId>com.alibaba</groupId><artifactId ...

  5. python json loads_python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)...

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.dumps()和json.loads()是json ...

  6. python json文件_python读写json文件的简单实现

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  7. python json.load_python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)...

    原博文 2018-04-22 09:11 − JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.du ...

  8. Python读写json文件的简单实现

    转载自https://blog.csdn.net/vitaminc4/article/details/77985175 介绍 JSON(JavaScript Object Notation) 是一种轻 ...

  9. python 读写 json文件

    json的优势: 1. 数据体积方面. JSON相对于XML来讲,数据的体积小,传递的速度更快些. 2. 传输速度方面. JSON的速度要远远快于XML 3. 数据格式 数据格式比较简单, 易于读写, ...

最新文章

  1. java 导出excel 注解_Java基于注解和反射导入导出Excel
  2. UIBezierPath介绍
  3. ajax——XMLHttpRequest
  4. python flask框架教程_Flask框架从入门到实战
  5. 那些年踩过的Java异常,简直了!
  6. 【Antlr】cannot create implicit token for string literal in non-combined grammar xx
  7. (C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口
  8. 支付宝WAP支付接口开发
  9. 堂娜·哈拉维:赛博格宣言
  10. python正则_python中正则匹配
  11. python列表操作符_Python中list()列表操作符的案例分享
  12. NYOJ517 最小公倍数
  13. wap网站制作教程,Github标星5.3K
  14. 电脑字体变成繁体中文怎么更改过来呢
  15. source-map讲解
  16. 全息网御上榜《CCSIP 2022中国网络安全产业全景图》
  17. windows 系统R配置默认多核运算
  18. matlab设置线条颜色宽度线型
  19. Win7 更新 80072EFE 错误
  20. interpersonal skill training

热门文章

  1. jquery源码分析(七)——事件模块 event(二)
  2. vsftpd用户配置 No.2
  3. ReferenceQueue的使用
  4. java: web应用中不经意的内存泄露
  5. ubuntu操作系统下载
  6. .asmx支持post请求或者get请求调用(WebService 因 URL 意外地以 结束,请求格式无法识别 的解决方法)...
  7. layui select 与 vue 的结合使用
  8. QT开发(五十)——QT串口编程基础
  9. 安装Macports遇到的问题和PATH设置
  10. 一万年太久,只争朝夕