Springboot如何读取resources下的json配置文件

 更新时间:2023年07月20日 16:36:30   作者:极值小白  
这篇文章主要介绍了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方法如下

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MAC环境下安装多个JDK的实现步骤

    MAC环境下安装多个JDK的实现步骤

    为了能够在Mac上管理多个JDK版本,首先需要安装这些不同的JDK版本,这篇文章主要介绍了MAC环境下安装多个JDK的实现步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-11-11
  • Java项目NoProviderFoundException报错的解决方案

    Java项目NoProviderFoundException报错的解决方案

    在Java开发中,jakarta.validation.NoProviderFoundException 是一个令人困惑的运行时错误,常因校验框架依赖缺失或版本冲突导致,本文给大家介绍了Java项目NoProviderFoundException报错的解决方案,需要的朋友可以参考下
    2025-06-06
  • Java中的匿名内部类小结

    Java中的匿名内部类小结

    java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。这篇文章主要介绍了Java中的匿名内部类的相关资料,需要的朋友可以参考下
    2016-07-07
  • 如何使用HttpClient发送java对象到服务器

    如何使用HttpClient发送java对象到服务器

    这篇文章主要介绍了如何使用HttpClient发送java对象到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 2021最新IDEA的各种快捷键汇总

    2021最新IDEA的各种快捷键汇总

    掌握idea的各种快捷键,可以帮助我们开发程序,今天小编给大家带来几种比较常用的idea快捷键及一些快捷键介绍,对idea快捷键相关知识,感兴趣的朋友一起看看吧
    2021-05-05
  • Java稀疏数组的应用实践

    Java稀疏数组的应用实践

    本文主要介绍了Java稀疏数组的应用实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 关于HashMap的put方法执行全过程

    关于HashMap的put方法执行全过程

    这篇文章主要介绍了关于HashMap的put方法执行全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Android中比较常见的Java super关键字

    Android中比较常见的Java super关键字

    这篇文章主要为大家介绍了Android中比较常见的Java super关键字,具有一定的学习参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Java工具类DateUtils实例详解

    Java工具类DateUtils实例详解

    这篇文章主要为大家详细介绍了Java工具类DateUtils实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • mybatis-plus(insertBatchSomeColumn批量添加方式)

    mybatis-plus(insertBatchSomeColumn批量添加方式)

    这篇文章主要介绍了mybatis-plus(insertBatchSomeColumn批量添加方式),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论