java读取json格式文件 存入数据库

 直接读写文件,再把读出来的文件内容格式化成json,再用JDBC、Mybatis或者其他框架将json数据存入数据库。

假设实体类是这样的:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

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;

}

 

}

有一个json格式的文件,存的信息如下:

1

2

Sets.json:

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

具体操作:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

/*

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

*/

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;

}

将获取到的字符串,入库即可。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,关于使用 Java 读取JSON 文件存入数据库,您可以考虑使用 Jackson 提供的 Streaming API 和 JDBC 连接数据库进行操作。 首先,使用 Jackson 的 Streaming API 可以逐行读取 JSON 文件,缓解内存压力,示例代码如下: ```java ObjectMapper mapper = new ObjectMapper(); JsonFactory factory = mapper.getFactory(); // input 是 JSON 文件输入流 JsonParser parser = factory.createParser(input); while (parser.nextToken() != null) { // 处理每行 JSON 数据 JsonNode node = mapper.readTree(parser); // 存入数据库 // ... } ``` 然后,使用 JDBC 连接数据库执行批量写入,可以提高写入效率,示例代码如下: ```java // 获取数据库连接 Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD); Statement stmt = conn.createStatement(); // 构造插入 SQL 语句 String sql = "INSERT INTO table_name (column1, column2, ...) VALUES (?, ?, ...)"; PreparedStatement ps = conn.prepareStatement(sql); int count = 0; // 计数器,累计插入数据条数 while (/* 读取JSON文件,逐行处理 */) { // 将一行数据放入 PreparedStatement 中 ps.setString(1, value1); ps.setInt(2, value2); // ... ps.addBatch(); // 添加到批量执行队列 count++; if (count % BATCH_SIZE == 0) { // 达到批量执行数量 ps.executeBatch(); // 批量执行 ps.clearBatch(); // 清空批量执行队列 } } ps.executeBatch(); // 最后未满批量执行数量的数据也要执行 ps.close(); conn.close(); ``` 以上代码仅作示例,实际情况中需要根据具体情况进行参数化、异常处理等操作。 希望这能为您提供帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值