`

Java 读写json格式的文件方法详解

    博客分类:
  • json
 
阅读更多

一、要解决这个问题首先要知道json格式是什么?

JSON格式:
比如学生有学号,姓名,性别等。
用json表示则为:
{"studno":"11111","studname":"wwww","studsex":"男"}(各个字段都是字符型)

这代表一个学生的信息。

如果多个呢?

[{"studno":"122222","studname":"wwww","studsex":"男"},
{"studno":"11111","studname":"xxxx","studsex":"男"},
{"studno":"33333","studname":"ssss","studsex":"男"}]

这就是json格式。

二、那如何操作json格式的文件呢?

这个更简单了,说白了就是直接读写文件,再把读出来的文件内容格式化成json就可以了。

三、具体操作。

1.我有一个实体类,如下:

public class ElectSet {
public String xueqi;
public String xuenian;
public String startTime;
public String endTime;
public int menshu;
public String isReadDB;
//{"xueqi":,"xuenian":,"startTime":,"endTime":,"renshu":,"isReadDB":}
public String getXueqi() {
   return xueqi;
}
public void setXueqi(String xueqi) {
   this.xueqi = xueqi;
}
public String getXuenian() {
   return xuenian;
}
public void setXuenian(String xuenian) {
   this.xuenian = xuenian;
}
public String getStartTime() {
   return startTime;
}
public void setStartTime(String startTime) {
   this.startTime = startTime;
}
public String getEndTime() {
   return endTime;
}
public void setEndTime(String endTime) {
   this.endTime = endTime;
}
public int getMenshu() {
   return menshu;
}
public void setMenshu(int menshu) {
   this.menshu = menshu;
}
public String getIsReadDB() {
   return isReadDB;
}
public void setIsReadDB(String isReadDB) {
   this.isReadDB = isReadDB;
}

}

2.有一个json格式的文件,存的就是他的信息,如下

Sets.json:
{"xuenian":"2007-2008","xueqi":"1","startTime":"2009-07-19 08:30","endTime":"2009-07-22 18:00","menshu":"10","isReadDB":"Y"}

3.具体操作.
/*
* 取出文件内容,填充对象
*/
public ElectSet findElectSet(String path){
   ElectSet electset=new ElectSet();
   String sets=ReadFile(path);//获得json文件的内容
   JSONObject jo=JSONObject.fromObject(sets);//格式化成json对象
   //System.out.println("------------" jo);
   //String name = jo.getString("xuenian");
   //System.out.println(name);
   electset.setXueqi(jo.getString("xueqi"));
   electset.setXuenian(jo.getString("xuenian"));
   electset.setStartTime(jo.getString("startTime"));
   electset.setEndTime(jo.getString("endTime"));
   electset.setMenshu(jo.getInt("menshu"));
   electset.setIsReadDB(jo.getString("isReadDB"));
   return electset;
}
//设置属性,并保存
public boolean setElect(String path,String sets){
   try {
    writeFile(path,sets);
    return true;
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return false;
   }
}
//读文件,返回字符串
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;
}
         //把json格式的字符串写到文件
public void writeFile(String filePath, String sets) throws IOException {
    FileWriter fw = new FileWriter(filePath);
    PrintWriter out = new PrintWriter(fw);
    out.write(sets);
    out.println();
    fw.close();
    out.close();
   }

4.调用,使用(在网站的controller里调用的)

//取出json对象
public void GetElectSettings(HttpServletRequest request,
    HttpServletResponse response) throws Exception {
   ElectSet electset=new ElectSet();
   String absPath = request.getRealPath("\");
   String filePath = absPath "public\sets\electSets.json";
   electset=businessService.findElectSets(filePath);//这里是调用,大家自己改改,我调用的业务层的。
   JSONArray jsonItems = new JSONArray();
   jsonItems.add(electset);
   JSONObject jo=new JSONObject();
   jo.put("data", jsonItems);
   System.out.println(jo);
   request.setCharacterEncoding("utf-8");
   response.setContentType("application/json;charset=utf-8");
   PrintWriter out = response.getWriter();
   out.print(jo);
}

//修改json文件
public void ChangeElectSet(HttpServletRequest request,
    HttpServletResponse response) throws Exception {
   request.setCharacterEncoding("UTF-8");
   response.setContentType("text/json;charset=utf-8");
   log.info("reach ChangeElectSet");
   String json = (String) request.getParameter("json").trim();
   log.info("Change ElectSet");
   log.info(json);
   ElectSet sets = new ElectSet();
   JSONObject jsonObject = JSONObject.fromObject(json);
   sets = (ElectSet) JSONObject.toBean(jsonObject, ElectSet.class);
   if(sets.getIsReadDB()=="false"){
    sets.setIsReadDB("否");
   }
   else{
    sets.setIsReadDB("是");
   }
   String changes="{"xuenian":"";//因为json的属性要用引号,所以要用"转义一下
   changes =sets.getXuenian() "","xueqi":"" sets.getXueqi() "","startTime":"" sets.getStartTime() "","endTime":"" sets.getEndTime() "","menshu":"" sets.getMenshu() "","isReadDB":"" sets.getIsReadDB() ""}";
   System.out.println(changes);
   String absPath = request.getRealPath("\");
   String filePath = absPath "public\sets\electSets.json";

分享到:
评论

相关推荐

    Java_读写json格式的文件方法详解

    Java 读写 JSON 格式的文件方法详解 本文主要讲解了如何在 Java 中读写 JSON 格式的文件,解决了在实际应用中常见的问题。首先,需要了解什么是 JSON 格式,JSON 格式是一种轻量级的数据交换格式,易于人类阅读和...

    java遍历JSON树

    ### Java遍历JSON树知识点详解 #### 一、前言 在处理Web应用程序中的数据时,JSON(JavaScript Object Notation)是一种非常常见的数据格式。它轻量级且易于读写,因此广泛应用于前后端的数据交互中。对于Java...

    java反射实现javabean转json实例代码.docx

    ### Java反射机制实现JavaBean转JSON的详细解析 #### 一、引言 在现代软件开发过程中,数据格式转换是一项非常常见的任务。特别是在处理不同系统之间的数据交换时,JSON(JavaScript Object Notation)因其轻量级...

    android json 解析jar

    8. **流式API**:对于大量数据的处理,Gson提供了流式API,可以有效地读写JSON数据。 9. **序列化策略**:你可以通过`@JsonAdapter`注解,为特定字段或类型设置自定义的序列化和反序列化策略。 10. **安全性**:在...

    org.jsonjar包

    - **配置文件**:在某些Java应用中,JSON可以作为配置文件的格式,便于读写和解析。 - **数据存储**:在本地存储少量数据时,JSON提供了一种轻量级的序列化和反序列化方式。 总之,`org.json.jar`包是Java开发者...

    json相关依赖包 json相关依赖包

    ### JSON相关依赖包详解 #### 一、引言 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在Java开发中,处理JSON数据...

    Android通过json向MySQL中读写数据的方法详解【写入篇】

    首先定义一个类JSONParser.Java类,将json上传数据的方法封装好,可以直接在主程序中调用该类,代码如下 public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String ...

    Android通过json向MySQL中读写数据的方法详解【读取篇】

    在Android应用程序开发中,与服务器进行数据交换是常见的需求,而JSON作为一种轻量级的数据交换格式,被广泛用于客户端和服务器之间的通信。本篇文章将详细介绍如何在Android应用中通过JSON解析来从MySQL数据库读取...

    java nio 包读取超大数据文件

    ### Java NIO 处理超大数据文件的知识点详解 #### 一、Java NIO简介 Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本...

    Java TCPIP应用开发详解

    4. 异步非阻塞IO:Java NIO(New IO)提供了一种用于替代标准Java IO的新方法。NIO支持面向缓冲区的、基于通道的IO操作,可以非阻塞地读写数据。它非常适合于需要处理大量连接的场景,例如Web服务器或代理服务器。 ...

    java_IO操作_(读写、追加、删除、移动、复制、修改)

    按字符读取文件主要用于处理文本文件,如纯文本、XML或JSON等格式的文件。主要使用`InputStreamReader`和`FileReader`类来实现: ```java public static void readFileByChars(String fileName) { File file = new...

    javajava音乐下载

    这些API遵循HTTP方法(GET、POST、PUT、DELETE等),返回JSON或XML格式的数据。 8. **安全性**:音乐下载系统需要考虑版权问题和用户隐私。Java提供了SSL/TLS支持,可以加密传输数据,防止中间人攻击。同时,访问...

    Json、Linux、Spring定时任务

    22. **`chmod 777 文件`**:修改文件权限,使其可读写执行。 23. **`ifconfig`**:管理网络接口。 #### 在一张网卡上绑定多个IP地址 在Linux系统中,可以通过`ifconfig`命令为网卡配置多个IP地址,例如: ```sh ...

    Python json读写方式和字典相互转化

    ### Python中的JSON读写方式与字典相互转化详解 #### 引言 在现代软件开发过程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于阅读和编写,同时也易于机器解析和生成而受到广泛欢迎。...

    Struts2 json插件入门指南.pdf

    - `json-lib-2.1-jdk15.jar`: JSON库,用于读写JSON格式的数据。 - `struts2-json-plugin-2.3.1.1.jar`: Struts2的JSON插件,用于处理JSON相关的请求和响应。 #### 2. 准备工作:搭建Struts2运行环境 - 创建一个...

    简单图书管理系统java语言实现

    例如,使用ArrayList存储图书对象,HashMap存储基于图书ID的图书信息,使用文件读写操作持久化数据,如XML或JSON格式,确保数据在程序重启后依然可恢复。 四、用户界面与控制层 系统通常包含用户界面,如命令行界面...

    基于Java的源码-iqq(开源 QQ 工具 iQQ).zip

    4. **数据解析**:QQ协议的数据可能包含二进制和文本格式,Java提供了诸如DataInputStream、DataOutputStream、BufferedReader、BufferedWriter等类用于读写数据,以及JSON库如Jackson或Gson进行JSON格式的解析。...

Global site tag (gtag.js) - Google Analytics