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种方式