java讀取json文件的2種方式例子
1 背景介紹
研發(fā)過程中,經(jīng)常會涉及到讀取配置文件等重復(fù)步驟,也行是.conf文件,也許是.json文件,但不管如何他們最終都需要進入到j(luò)ave的inputStream里面。下面以讀取.json文件為例
2 FileInputStream讀取
需要1個參數(shù):
- fileName: 文件名,一般為絕對路徑,不然可能會找不到?;蛘吆蚸ava文件同一個路徑下
static String readWithFileInputStream(){
String jsonString;
//System.getProperty("user.dir")為獲取根目錄
//File.separator為不同操作系統(tǒng)的分隔符,linux和win是不一樣的
//tempFilePath該字符串里面為我們配置文件的路徑
String fileName = "xx_config.json";
// String tempFilePath = System.getProperty("user.dir") + File.separator + "resource" + File.separator + fileName;
// System.out.print(tempFilePath);
StringBuilder sb = new StringBuilder();
try{
InputStream input = new FileInputStream(fileName);
byte[] buffer = new byte[1024];
int length = 0;
length = input.read(buffer);
while(length != -1){
sb.append(new String(buffer, 0 , length));
length = input.read(buffer);
}
}catch (Exception e){
e.printStackTrace();
}
return jsonString = sb.toString();
}最終返回一個String。然后通過JSON工具就可以轉(zhuǎn)為自己想讀取到模型啦。
TargetConfig config = (TargetConfig) JSON.parseObject(jsonString, TargetConfig.class);
但該種方式不靈活,需要把路徑寫死,或者寫成絕對路徑。
3 ClassLoader讀取
需要2個參數(shù):
- fileName: 文件名
- ClassLoader: 類加載器,一般為當前類
static String readWithClassLoader() throws IOException {
String fileName = "xx_config.json";
ClassLoader classLoader = TargetConfig.class.getClassLoader();
BufferedReader reader = null;
InputStream inputStream = classLoader.getResourceAsStream(fileName);
reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder content = new StringBuilder();
String line = reader.readLine();
while (!StringUtil.isEmpty(line)) {
content.append(line);
line = reader.readLine();
}
return content.toString();
}和之前一樣,最終返回一個String。然后通過JSON工具就可以轉(zhuǎn)為自己想讀取到模型啦。
TargetConfig config = (TargetConfig) JSON.parseObject(jsonString, TargetConfig.class);
但使用類加載讀取,可以不用寫死路徑。比第一種要靈活很多。

總結(jié)
到此這篇關(guān)于java讀取json文件的2種方式的文章就介紹到這了,更多相關(guān)java讀取json文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis-Plus中updateById方法不能更新空值問題解決
本文主要介紹了Mybatis-Plus中updateById方法不能更新空值問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Spring中@Import的各種用法以及ImportAware接口詳解
這篇文章主要介紹了Spring中@Import的各種用法以及ImportAware接口詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
解決idea中maven項目打包成jar報錯:沒有主清單屬性的問題
這篇文章主要給大家分享了idea中maven項目打包成jar,報錯沒有主清單屬性解決方法,文中有詳細的解決方法,如果又遇到同樣問題的朋友可以參考一下本文2023-09-09

