在開發Elasticsearch的應用過程中,需要讀取索引相關的JSON Settings、MAppings設置,將JSON文檔存放到項目的resources 目錄,然后讀取并調用Elasticsearch API 執行。
POM依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
讀取JSON工具類
package com.fanxb.esdemo.util;
import JAVA.io.*;
public class JsonUtil {
/**
* 讀取json文件,返回json串
* @param fileName
* @return
*/
public static String readJsonFile(String fileName) {
String jsonStr = "";
try {
File jsonFile = new File(fileName);
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);
}
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
編寫單元測試
getResource(""):這個方法可以用于查看當前目錄。
this.getClass().getResource("")和this.getClass().getClassloader().getResource("") 區別?
第一個是類路徑下(即 class 根目錄);
第二個目錄是 class目錄里面當前類的包路徑(package);
參考下圖,推薦寫法:
this.getClass().getClassLoader().getResource("文件名.文件類型")
單元測試方法,具體代碼如下。
@Test
public void readJsonFile(){
String path = this.getClass().getClassLoader().getResource("order_template.json").getPath();
String jsonFile = JsonUtil.readJsonFile(path);
System.out.println(jsonFile);
}
order_template.json文件放入resources資源目錄中,如下是輸出結果。