Springboot如何读取resources下的json配置文件
作者:极值小白
这篇文章主要介绍了Springboot如何读取resources下的json配置文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
Springboot读取resources下json配置文件
编写json文件放置在resources目录下
例:
编写test.json文件,放在Springboot工程resource目录下
{
"string": "王大锤",
"object": {
"objectTest": "objectTestValue"
},
"array": [
{
"arrayTest": "arrayTestValue"
}
]
}文件读取及解析
解析json文件的内容用使用了fastjson包,可在pom文件中进行以下引用:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.49</version> </dependency>
解析方法:
public void JsonTest() throws IOException {
String path = "/test.json";
InputStream config = getClass().getResourceAsStream(path);
if (config == null) {
throw new RuntimeException("读取文件失败");
} else {
JSONObject json = JSON.parseObject(config, JSONObject.class);
System.out.println(json);
}
}以上方法输出的json参数,会完整打印test.json文件中的内容,并保留着json对象的性质。
如果需要读取整个文件内容作为配置,着可直接使用此参数或进行相应的格式转换。
若只要文件中某一个参数作为配置进行引入,则可使用以下方法,进一步解析数据。
// 获取值为String类型的参数
String str = json.getString("string");
// 获取值为{}对象类型的参数
JSONObject obj = json.getJSONObject("object");
// 获取值为[]数组(列表)类型的参数
JSONArray array = json.getJSONArray("array");json文件类类型基本就这三种,复杂的json文件需要有耐心层层解析得到数据,有规律的json数据可通过建立类的方式,直接转换成实体类进行解析。
Springboot解析resource中的json
通常由两种方法
方法一
try {
// 根据resource文件路径,生成文件
File jsonFile = ResourceUtils.getFile("classpath:ZhongLv.json");
// 解析文件为指定编码的字符串
// 方法实现:先将文件转inPutStream,再调用下面的IOUtils.toString()方法;
String json = FileUtils.readFileToString(jsonFile,"UTF-8");
JSONArray jsonArray = JSON.parseArray(json);
} catch (IOException e) {
e.printStackTrace();
}方法二
/**
* 本系统和第三方系统字段对应关系json
*/
@Value("classpath:ZhongLv.json")
private Resource relation;
String relationStr = null;
try {
// 方法实现:将文件的InputStream写入inputStreamReader,再调用方法把reader写入writer,再使用StringBuilderWriter接收,最后toString();
relationStr = IOUtils.toString(relation.getInputStream(), StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}心得
private static final int EOF = -1;
private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
public static String toString(InputStream input, Charset encoding) throws IOException {
StringBuilderWriter sw = new StringBuilderWriter();
InputStreamReader in = new InputStreamReader(input, Charsets.toCharset(encoding));
char [] buffer = new char[DEFAULT_BUFFER_SIZE];
long count = 0;
int n = 0;
while (EOF != (n = in.read(buffer))) {
sw.write(buffer, 0, n);
count += n;
}
return sw.toString();
}他们的底层都是IO操作,汇总后的IOUtils.toString方法如下
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- SpringBoot如何读取resources目录下的文件
- SpringBoot中读取jar包中的resources目录下的文件的三种方式
- springboot项目读取resources目录下的文件的9种方式
- springboot读取resources下文件的方式详解
- SpringBoot部署到Linux读取resources下的文件及遇到的坑
- Springboot 项目读取Resources目录下的文件(推荐)
- java(包括springboot)读取resources下文件方式实现
- 解决SpringBoot打成jar运行后无法读取resources里的文件问题
- springboot项目读取resources目录下的文件的9种方式
