天天看點

Java讀取本地json檔案Derby資料庫的使用

背景

之前一直在弄一個Java爬蟲,将爬取的資訊儲存到了資料庫中。但這畢竟是一個課程設計,在設計前端GUI,展示資料的時候最開始是直接通過select語句從資料庫中查找的,但我擔心交給老師後,老師還要配置JDBC的參數建立資料庫插入表等一些繁瑣操作,便想要儲存到本地。昨晚看到同學從資料庫中導出一個json檔案,從json檔案中讀取資訊,看過後覺得這不失為一個好辦法,于是學習了一下,這裡整理整理。

​​​​

開發環境

1 JDK1.8

2 IntelliJ IDEA

3 IDEA自帶的Maven

json檔案

{
  "RECORDS": [
    {
      "movieId": "1",
      "name": "肖申克的救贖 The Shawshank Redemption",
      "director": "弗蘭克·德拉邦特",
      "scenarist": "弗蘭克·德拉邦特 / 斯蒂芬·金",
      "actors": "蒂姆·羅賓斯 / 摩根·弗裡曼 / 鮑勃·岡頓 / 威廉姆·賽德勒 / 克蘭西·布朗 / 吉爾·貝羅斯 / 馬克·羅斯頓 / 詹姆斯·惠特摩 / 傑弗裡·德曼 / 拉裡·布蘭登伯格 / 尼爾·吉恩托利 / 布賴恩·利比 / 大衛·普羅瓦爾 / 約瑟夫·勞格諾 / 祖德·塞克利拉 / 保羅·麥克蘭尼 / 芮妮·布萊恩 / 阿方索·弗裡曼 / V·J·福斯特 / 弗蘭克·梅德拉諾 / 馬克·邁爾斯 / 尼爾·薩默斯 / 耐德·巴拉米 / 布賴恩·戴拉特 / 唐·麥克馬納斯",
      "type": "劇情 犯罪",
      "ratingNum": "9.7",
      "tags": "經典 勵志 信念 自由 人性 人生 美國 劇情"
    },
    {
      "movieId": "2",
      "name": "霸王别姬",
      "director": "陳凱歌",
      "scenarist": "蘆葦 / 李碧華",
      "actors": "張國榮 / 張豐毅 / 鞏俐 / 葛優 / 英達 / 蔣雯麗 / 吳大維 / 呂齊 / 雷漢 / 尹治 / 馬明威 / 費振翔 / 智一桐 / 李春 / 趙海龍 / 李丹 / 童弟 / 沈慧芬 / 黃斐",
      "type": "劇情 愛情 同性",
      "ratingNum": "9.6",
      "tags": "經典 人性 文藝 愛情 人生 同志 劇情 文革"
    },
    {
      "movieId": "3",
      "name": "阿甘正傳 Forrest Gump",
      "director": "羅伯特·澤米吉斯",
      "scenarist": "艾瑞克·羅斯 / 溫斯頓·格魯姆",
      "actors": "湯姆·漢克斯 / 羅賓·懷特 / 加裡·西尼斯 / 麥凱爾泰·威廉遜 / 莎莉·菲爾德 / 海利·喬·奧斯蒙 / 邁克爾·康納·亨弗裡斯 / 哈羅德·G·赫瑟姆 / 山姆·安德森 / 伊俄涅·M·特雷奇 / 彼得·道博森 / 希芳·法隆 / 伊麗莎白·漢克斯 / 漢娜·豪爾 / 克裡斯托弗·瓊斯 / 羅布·蘭德裡 / 傑森·麥克奎爾 / 桑尼·施羅耶 / 艾德·戴維斯 / 丹尼爾C.斯瑞派克 / 大衛·布裡斯賓 / 德博拉·麥克蒂爾 / 艾爾·哈林頓 / 阿非莫·奧米拉 / 約翰·沃德斯塔德 / 邁克爾·伯吉斯 / 埃裡克·安德伍德 / 拜倫·明斯 / 斯蒂芬·布吉格沃特 / 約翰·威廉·高爾特 / 希拉裡·沙普蘭 / 伊莎貝爾·羅斯 / 理查德·達曆山德羅 / 迪克·史迪威 / 邁克爾-傑斯 / 傑弗裡·布萊克 / 瓦妮莎·羅斯 / 迪克·卡維特 / 馬拉·蘇查雷特紮 / 喬·阿拉斯奇 / W·本森·泰瑞",
      "type": "劇情 愛情",
      "ratingNum": "9.5",
      "tags": "勵志 經典 人生 美國 成長 信念 劇情 人性"
    }
  ]
}      
Java讀取本地json檔案Derby資料庫的使用

注意這裡是将json檔案放到resources檔案下

pom依賴

<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.47</version>
 </dependency>      

讀取JSON工具類

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;


import java.io.*;


public class JsonTest {

    //讀取json檔案
    public static String readJsonFile(String fileName) {
        String jsonStr = "";
        try {
            File jsonFile = new File(fileName);
            FileReader fileReader = new FileReader(jsonFile);
            Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
            int ch = 0;
            StringBuffer sb = new StringBuffer();
            while ((ch = reader.read()) != -1) {
                sb.append((char) ch);
            }
            fileReader.close();
            reader.close();
            jsonStr = sb.toString();
            return jsonStr;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }


    public static void main(String[] args) {
        String path = JsonTest.class.getClassLoader().getResource("Movie.json").getPath();
        String s = readJsonFile(path);
        JSONObject jobj = JSON.parseObject(s);
        JSONArray movies = jobj.getJSONArray("RECORDS");//建構JSONArray數組
        for (int i = 0 ; i < movies.size();i++){
            JSONObject key = (JSONObject)movies.get(i);
            String name = (String)key.get("name");
            String director = (String)key.get("director");
            String scenarist=((String)key.get("scenarist"));
            String actors=((String)key.get("actors"));
            String type=((String)key.get("type"));
            String ratingNum=((String)key.get("ratingNum"));
            String tags=((String)key.get("tags"));
            System.out.println(name);
            System.out.println(director);
            System.out.println(scenarist);
            System.out.println(actors);
            System.out.println(type);
            System.out.println(director);
            System.out.println(ratingNum);
            System.out.println(tags);
        }
    }
}      
Java讀取本地json檔案Derby資料庫的使用

作者:王陸