1. 程式人生 > 其它 >java獲取本地json格式的內容

java獲取本地json格式的內容

前言

該功能模組基於springBoot,自己在開發中遇到相關功能開發,總結如寫:

1.首先將所需要獲取的json檔案放在專案resource目錄下:

2.所需要的pom依賴:

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

3.讀取JSON工具類

/**
     * 讀取json檔案,返回json串
     * @param fileName
     * @return
     */
    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;
        }
    }

4.測試類

public class TestJson {
 public static void main(String[] args) throws  Exception{
      // 假設我下面json文件有10個 名字:1 -10.json
       for (int j = 1; j < 10; j++) {
            String srcpath = j+".json";
            String path = ElectronicWaybillController.class.getClassLoader().getResource(srcpath).getPath();
            String s = readJsonFile(path);
            JSONObject jobj = JSON.parseObject(s);
            //構建JSONArray陣列
            JSONArray movies = jobj.getJSONArray("content");
            for (int i = 0 ; i < movies.size();i++){
                JSONObject key = (JSONObject)movies.get(i);
                ElectronicWaybillDetailsDTO electronicWaybillDetailsDTO = new ElectronicWaybillDetailsDTO();
                electronicWaybillDetailsDTO.setDriverName((String)key.get("driverName"));
                electronicWaybillDetailsDTO.setAreaCode((String)key.get("organCode"));
                electronicWaybillDetailsDTO.setCanBodyNo((String)key.get("tankNum"));

                    這裡欄位較多,以上寫以上幾個作為代表

                electronicWaybillService.insert(electronicWaybillDetailsDTO);
        }
}
古今成大事者,不唯有超世之才,必有堅韌不拔之志!