1.思路

  1. 读取json资源文件
  2. File转化为JSON串
  3. JSON串转对象集合
  4. 遍历插入到数据库

2.工具(jar包)

  • 使用spring-corefastjson,commons-io,mysql
  • 下面给出maven坐标
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.2.0.RELEASE</version>
</dependency>
<!--  jdbc驱动包 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.30</version>
</dependency>
  • json文件
[{
  "id": 41,
  "name": "配合",
  "artist": "薛之谦",
  "url": "https://music.163.com/song/media/outer/url?id=1374061040.mp3",
  "cover": "http://p1.music.126.net/JL_id1CFwNJpzgrXwemh4Q==/109951164172892390.jpg",
  "lrc": "[00:03.523]作词 : 薛之谦/甘世佳\r\n[00:04.989]作曲 : 周以力/薛之谦\r\n[00:17.076]我接受驯化 我接受驯化\r\n[00:20.796]我伤口复杂 等待惩罚\r\n[00:24.877]我变成莲花 我变成莲花\r\n[00:28.843]世人要我脏 此外无他\r\n[00:32.877]叹息墙下 任人粉刷 要你对话 肆意喧哗\r\n[00:40.829]夺我白马 赐我利爪\r\n[00:44.927]这等变化你能更嗨吗\r\n[00:51.099]既妖魔化 又何惧真假 法外无它 我配合你一下 啊啊\r\n[00:59.106]面具下 谁也都伟大 恶能美化 那鹿就是马 愿你洁白无瑕\r\n[01:25.641]我们多融洽 我们多融洽\r\n[01:29.257]为逃避廉价 互相丑化\r\n[01:33.356]我梦见莲花 我梦见莲花\r\n[01:37.595]没习惯腐化 哪怕一霎\r\n[01:41.481]叹息墙下 脸皮涨价 谁先说话 忠于计划\r\n[01:49.375]分食白马 长出利爪\r\n[01:53.341]让我做个诱人的标靶 啊\r\n[02:01.726]既妖魔化 又何惧真假 法外无它 我配合你一下 啊啊\r\n[02:09.614]面具下 谁也都伟大 恶能美化 那鹿就是马 人人洁白无瑕\r\n[02:35.948]既妖魔化 没人信真假 我外无他 就配合你一下 啊啊 面具下 众生都伟大 自我矮化 还曲高和寡\r\n[02:56.566]若我火化 顺你意了吗 口诛笔伐 请你别停下 啊啊\r\n[03:05.805]不配伟大也不配笑话 最后一下 请妙笔生花 纪念那个傻瓜\r\n[03:22.597]制作人 : 周以力\r\n[03:22.948]编曲 : 周以力\r\n[03:23.257]吉他 : 张凇\r\n[03:23.530]贝斯 : 陈然然\r\n[03:23.783]鼓手 : 尹森\r\n[03:24.030]大提琴 : 郎莹\r\n[03:24.246]和音 : 薛之谦\r\n[03:24.446]录音师 : 鲍锐/王晓海\r\n[03:24.691]录音棚 : 北京有位音乐录音棚/北京录顶技录音棚\r\n[03:24.915]混音 : 鲍锐\r\n[03:25.113]母带 : 鲍锐"
}, {
  "id": 40,
  "name": "讲真的",
  "artist": "曾惜",
  "url": "https://music.163.com/song/media/outer/url?id=30987293.mp3",
  "cover": "https://p1.music.126.net/cd9tDyVMq7zzYFbkr0gZcw==/2885118513459477.jpg",
  "lrc": "[by:却连一句我爱你都不能说出口]\n[ti:讲真的]\n[ar:曾惜]\n[al:不要你为难]\n[by:冰城离殇]\n[00:00] 作曲 : 何诗蒙\n[00:01] 作词 : 黄然\n[00:18]今夜特别漫长\n[00:21]有个号码一直被存放\n[00:25]源自某种倔强\n[00:30]不舍删去又不敢想\n[00:33]明明对你念念不忘\n[00:37]思前想后愈发紧张\n[00:41]无法深藏\n[00:43]爱没爱过想听你讲\n[00:48]讲真的\n[00:51]会不会是我 被鬼迷心窍了\n[00:54]敷衍了太多 我怎么不难过\n[00:58]要你亲口说 别只剩沉默\n[01:03]或许你早就回答了我\n[01:06]讲真的\n[01:08]想得不可得 是最难割舍的\n[01:11]各自好好过 也好过一直拖\n[01:15]自作多情了 好吧我认了\n[01:19]至少能换来释怀洒脱\n[01:23]没丢失掉自我\n[01:42]今夜特别漫长\n[01:44]有个号码一直被存放\n[01:49]源自某种倔强\n[01:53]不舍删去又不敢想\n[01:57]明明对你念念不忘\n[02:01]思前想后愈发紧张\n[02:05]无法深藏\n[02:08]爱没爱过想听你讲\n[02:13]讲真的\n[02:15]会不会是我 被鬼迷心窍了\n[02:19]敷衍了太多 我怎么不难过\n[02:23]要你亲口说 别只剩沉默\n[02:27]或许你早就回答了我\n[02:30]讲真的\n[02:32]想得不可得 是最难割舍的\n[02:35]各自好好过 也好过一直拖\n[02:40]自作多情了 好吧我认了\n[02:44]至少能换来释怀洒脱\n[02:47]没丢失掉自我\n[03:04]讲真的\n[03:05]会不会是我 被鬼迷心窍了\n[03:09]敷衍了太多 我怎么不难过\n[03:14]要你亲口说 别只剩沉默\n[03:18]或许你早就回答了我\n[03:21]讲真的\n[03:22]想得不可得 是最难割舍的\n[03:26]各自好好过 也好过一直拖\n[03:30]自作多情了 好吧我认了\n[03:35]至少能换来释怀洒脱\n[03:38]没丢失掉自我\n"
}, {
  "id": 39,
  "name": "学猫叫",
  "artist": "小潘潘(潘柚彤)",
  "url": "https://music.163.com/song/media/outer/url?id=554191055.mp3",
  "cover": "https://p1.music.126.net/D1Ov-XMAwUzsr16mQk95fA==/109951163256119128.jpg",
  "lrc": "[00:00] 作曲 : 小峰峰\n[00:01] 作词 : 小峰峰\n[00:05]编曲:吕宏斌&塞米七\n[00:05]和声:小峰峰\n[00:05]混音:陈秋洁\n[00:05]制作人:小峰峰\n[00:05]唱片:麦袭时代\n[00:06]OP:百纳娱乐\n[00:06]\n[00:07]小潘潘:\n[00:08]我们一起学猫叫\n[00:10]一起喵喵喵喵喵\n[00:12]在你面前撒个娇\n[00:14]哎呦喵喵喵喵喵\n[00:16]我的心脏砰砰跳\n[00:18]迷恋上你的坏笑\n[00:21]你不说爱我我就喵喵喵\n[00:24]\n[00:24]小峰峰:\n[00:26]每天都需要你的拥抱\n[00:29]珍惜在一起的每分每秒\n[00:33]你对我多重要\n[00:35]我想你比我更知道\n[00:38]你就是我的女主角\n[00:41]\n[00:41]小潘潘:\n[00:42]有时候我懒的像只猫\n[00:45]脾气不好时又张牙舞爪\n[00:50]你总是温柔的\n[00:51]能把我的心融化掉\n[00:54]我想要当你的小猫猫\n[00:59]\n[01:00]合:\n[01:00]我们一起学猫叫\n[01:02]一起喵喵喵喵喵\n[01:04]在你面前撒个娇\n[01:06]哎呦喵喵喵喵喵\n[01:08]我的心脏砰砰跳\n[01:10]迷恋上你的坏笑\n[01:13]你不说爱我我就喵喵喵\n[01:16]\n[01:17]我们一起学猫叫\n[01:19]一起喵喵喵喵喵\n[01:21]我要穿你的外套\n[01:23]闻你身上的味道\n[01:25]想要变成你的猫\n[01:27]赖在你怀里睡着\n[01:30]每天都贪恋着你的好\n[01:33]\n[01:50]小潘潘:\n[01:51]有时候我懒的像只猫\n[01:54]脾气不好时又张牙舞爪\n[01:58]你总是温柔的\n[02:01]能把我的心融化掉\n[02:03]我想要当你的小猫猫\n[02:07]\n[02:09]合:\n[02:09]我们一起学猫叫\n[02:11]一起喵喵喵喵喵\n[02:13]在你面前撒个娇\n[02:15]哎呦喵喵喵喵喵\n[02:17]我的心脏砰砰跳\n[02:19]迷恋上你的坏笑\n[02:22]你不说爱我我就喵喵喵\n[02:26]\n[02:26]我们一起学猫叫\n[02:28]一起喵喵喵喵喵\n[02:30]我要穿你的外套\n[02:32]闻你身上的味道\n[02:34]想要变成你的猫\n[02:36]赖在你怀里睡着\n[02:39]每天都贪恋着你的好\n[02:42]\n[02:42]我们一起学猫叫\n[02:44]一起喵喵喵喵喵\n[02:46]在你面前撒个娇\n[02:49]哎呦喵喵喵喵喵\n[02:51]我的心脏砰砰跳\n[02:53]迷恋上你的坏笑\n[02:55]你不说爱我我就喵喵喵\n[02:59]\n[02:59]我们一起学猫叫\n[03:01]一起喵喵喵喵喵\n[03:03]我要穿你的外套\n[03:05]闻你身上的味道\n[03:07]想要变成你的猫\n[03:09]赖在你怀里睡着\n[03:12]每天都贪恋着你的好\n"
}]

3.示例代码(可以直接运行)

  • Music 
package ssm.entity;

import lombok.Data;
import java.io.Serializable;

/**
 * @author chen
 * @create 2019-12-27 2:09
 * @url 1314258.cn
 */
@Data
public class Music implements Serializable {

    private static final long serialVersionUID = -38873741878079746L;
    /**
     *
     */
    private Integer id;

    /**
     *标题
     */
    private String name;

    /**
     *作者
     */
    private String artist;

    /**
     *歌曲路径
     */
    private String url;

    /**
     *封面图
     */
    private String cover;

    /**
     *歌词
     */
    private String lrc;

}

  • JsonDataToMysql
package ssm.util;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import org.springframework.util.ResourceUtils;
import ssm.entity.Music;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.List;

/**
 * @author chen
 * @create 2019-12-27 2:09
 * @url 1314258.cn
 */
public class JsonDataToMysql {

    private static final String URI = "jdbc:mysql://127.0.0.1/myblog?"
            + "user=root&password=123456&useUnicode=true&characterEncoding=UTF-8";

    private static final String DRIVER = "com.mysql.jdbc.Driver";

    /**
     * 获取数据库的连接
     *
     * @return
     * @throws Exception
     */
    public static Connection connectDB() throws Exception {
        //1、加载数据库驱动
        Class.forName(DRIVER);
        //2、获取数据库连接
        Connection conn = DriverManager.getConnection(URI);

        return conn;
    }

    public static void main(String[] args) throws Exception {
        //1.利用spring提供的工具类读取资源文件
        File jsonfile = ResourceUtils.getFile("classpath:cjb.json");
        //2.读取到的文件转换成为String类型
        String jsonsting = FileUtils.readFileToString(jsonfile);
        //3.将字符串转成list集合
        List<Music> musics = JSONObject.parseArray(jsonsting, Music.class);
        //获取当前系统的时间戳
        long start = System.currentTimeMillis();
        //获取数据库连接
        Connection conn = JsonDataToMysql.connectDB();
        //开启事务,取消自动提交
        conn.setAutoCommit(false);
        String sql = "INSERT INTO music(name, artist, url, cover,lrc) "
                + " VALUES(?, ?, ?, ?, ?)";
        //预编译sql语句
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //4.遍历插入到数据库
        for (int i = 0; i < musics.size(); i++) {
            pstmt.setString(1, musics.get(i).getName());
            pstmt.setString(2, musics.get(i).getArtist());
            pstmt.setString(3, musics.get(i).getUrl());
            pstmt.setString(4, musics.get(i).getCover());
            pstmt.setString(5, musics.get(i).getLrc());
            //"攒"SQL
            pstmt.addBatch();
            //每100条执行一次
            if ((i + 1) % 100 == 0) {
                //执行sql
                pstmt.executeBatch();
                //事务提交
                conn.commit();
            }
        }

        //最后插入不能整除的
        pstmt.executeBatch();
        conn.commit();
        long end = System.currentTimeMillis();
        System.out.println("花费时间:" + (end - start));
        System.out.println("成功插入" + musics.size() + "条");
        //释放资源
        pstmt.close();
        //再把自动提交打开,避免影响其他需要自动提交的操作
        conn.setAutoCommit(true);
        conn.close();
    }
}
  • sql
    CREATE TABLE `music` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(100) DEFAULT NULL,
      `artist` varchar(100) DEFAULT NULL,
      `url` varchar(200) DEFAULT NULL,
      `cover` varchar(200) DEFAULT NULL,
      `lrc` text,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8;
    

     

4.效果图片

5.其他

感觉这个注释已经写得很仔细了,不懂的可以留言或者私信我。

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐