java上传json文件步骤,Java 读写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格式的文件,存的就是他的信息,如下

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

3.具体操作.

public class Operate {

/*

* 取出文件内容,填充对象

*/

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里调用的)

public class Use {

// 取出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";

}

}

此文章取材红黑联盟,完善了下代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值