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方法如下

总结

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

相关文章

  • 使用JAVA实现邮件发送功能的图文教程

    使用JAVA实现邮件发送功能的图文教程

    邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,下面这篇文章主要给大家介绍了关于使用JAVA实现邮件发送功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Spring使用注解方式处理事务

    Spring使用注解方式处理事务

    这篇文章主要为大家详细介绍了Spring使用注解方式处理事务,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java 数据结构与算法系列精讲之贪心算法

    Java 数据结构与算法系列精讲之贪心算法

    我们可能在好多地方都会听到贪心算法这一概念,并且它的算法思想也比较简单就是说算法只保证局部最优,进而达到全局最优。但我们实际编程的过程中用的并不是很多,究其原因可能是贪心算法使用的条件比较苛刻,所要解决的问题必须满足贪心选择性质
    2022-02-02
  • java jdbc连接mysql数据库实现增删改查操作

    java jdbc连接mysql数据库实现增删改查操作

    这篇文章主要为大家详细介绍了java jdbc连接mysql数据库实现增删改查操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Spring @Conditional注解原理解析

    Spring @Conditional注解原理解析

    这篇文章主要介绍了Spring @Conditional注解原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Springboot项目参数校验方式(Validator)

    Springboot项目参数校验方式(Validator)

    本文介绍了如何在Spring Boot项目中使用`spring-boot-starter-validation`包和注解来实现请求参数校验,主要介绍了校验注解的使用方法、校验失败的异常捕获以及`@Validated`的分组功能
    2025-02-02
  • Java Volatile关键字实现原理过程解析

    Java Volatile关键字实现原理过程解析

    这篇文章主要介绍了Java Volatile关键字实现原理过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Spring和Mybatis整合的原理详解

    Spring和Mybatis整合的原理详解

    这篇文章主要介绍了Spring和Mybatis整合的原理详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • mybatis-plus之自动映射字段(typeHandler)的注意点及说明

    mybatis-plus之自动映射字段(typeHandler)的注意点及说明

    这篇文章主要介绍了mybatis-plus之自动映射字段(typeHandler)的注意点及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Spring详细讲解@Autowired注解

    Spring详细讲解@Autowired注解

    @Autowired注解可以用在类属性,构造函数,setter方法和函数参数上,该注解可以准确地控制bean在何处如何自动装配的过程。在默认情况下,该注解是类型驱动的注入
    2022-06-06

最新评论