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责任链模式详解

    责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它用于将请求的发送者和接收者解耦,使得多个对象都有机会处理这个请求,本文将详细介绍 Java 中的责任链模式,包括其概念、结构、实现方式以及应用案例等,需要的朋友可以参考下
    2023-05-05
  • WebSocket实现聊天室业务

    WebSocket实现聊天室业务

    这篇文章主要为大家详细介绍了WebSocket实现聊天室业务,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • java编程学习输入输出详解看完快速上手

    java编程学习输入输出详解看完快速上手

    这篇文章主要介绍了java编程学习输入输出到控制台的知识详解,看完就可以快速上手了,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • Java使用lombok消除冗余代码的方法步骤

    Java使用lombok消除冗余代码的方法步骤

    这篇文章主要介绍了Java使用lombok消除冗余代码的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • JAVA读取属性文件的几种方法总结

    JAVA读取属性文件的几种方法总结

    以下是对在JAVA中读取属性文件的几种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • SpringCloud Bus组件的使用配置详解

    SpringCloud Bus组件的使用配置详解

    bus称之为springcloud中消息总线,主要用来在微服务系统中实现远端配置更新时通过广播形式通知所有客户端刷新配置信息,避免手动重启服务的工作,这篇文章主要介绍了SpringCloud Bus组件的使用,需要的朋友可以参考下
    2022-03-03
  • Java中集合关系图及常见操作详解

    Java中集合关系图及常见操作详解

    这篇文章主要为大家详细介绍了Java中集合关系图及常见操作,解析Java中的集合类型的继承关系图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 浅谈MyBatis 事务管理

    浅谈MyBatis 事务管理

    这篇文章主要介绍了浅谈MyBatis 事务管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • SpringMVC文件上传功能实例解析

    SpringMVC文件上传功能实例解析

    这篇文章主要介绍了SpringMVC文件上传功能实例解析,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • springboot支持https请求的实现

    springboot支持https请求的实现

    本文主要介绍了springboot支持https请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论