SpringBoot读取资源目录中JSON文件的方法实例

目录
  • 前言
  • 思路
  • 示例
    • 1.Maven依赖
    • 2.json资源文件
    • 3.读取json的Service
    • 4.测试接口
  • 最后

前言

最近在做一个公共相关的内容,公告里边的内容,打算做成配置化的。

但是考虑到存储到数据库,需要建立数据库表;

存储到配置组件中,担心配置组件存储不下;

于是决定先暂时存储到项目中的资源目录中,以JSON的格式存储,待观察公告这一模块的需求变更如何,再另行做打算。

本文分享SpringBoot读取资源目录JSON配置文件的相关方法。

思路

使用Spring的ResourceUtils读取资源目录下的json文件。

使用common-io将读取的文件转化为json字符串。

使用fastjson将json字符串反序列为对象。

示例

1.Maven依赖

pom.xml,主要是common-io、fastjson的引入。

<!-- 资源目录资源文件读取 -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>

        <!-- 反序列化json字符串 -->
        <dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>2.0.14</version>
        </dependency>

2.json资源文件

notice.json,简单列举要使用json内容。

[
  {
    "title": "新功能xxx上线",
    "content": "支持xxx"
  },
  {
    "title": "旧功能xxx下线",
    "content": "不支持xxx"
  }
]

3.读取json的Service

3.1.定义接口

package com.example.springbootjson.service;

import com.example.springbootjson.domain.NoticeInfo;

import java.io.IOException;
import java.util.List;

/**
 * @author hongcunlin
 */
public interface NoticeService {
    /**
     * 获取公告
     *
     * @return 公告
     * @throws IOException 文件
     */
    List<NoticeInfo> getNoticeInfoList() throws IOException;
}

3.2.实现接口

这里可以说是本文的核心部分了,具体可以看代码中的实现,通过ResourceUtils读取notice.json这个json文件,通过common-io的FileUtils转化文件为json字符串,通过fastjson的JSON反序列json对象。

package com.example.springbootjson.service.impl;

import com.alibaba.fastjson2.JSON;
import com.example.springbootjson.domain.NoticeInfo;
import com.example.springbootjson.service.NoticeService;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ResourceUtils;

import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * @author hongcunlin
 */
@Service
public class NoticeServiceImpl implements NoticeService {

    @Override
    public List<NoticeInfo> getNoticeInfoList() throws IOException {
        File file = ResourceUtils.getFile("classpath:notice.json");
        String json = FileUtils.readFileToString(file, "UTF-8");
        List<NoticeInfo> noticeInfoList = JSON.parseArray(json, NoticeInfo.class);
        return noticeInfoList;
    }
}

4.测试接口

编写一个简单的集成测试,将上述编写的Service注入,执行方法,打印执行结果。

package com.example.springbootjson;

import com.example.springbootjson.service.NoticeService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;
import java.io.IOException;

@SpringBootTest
class SpringbootJsonApplicationTests {
    @Resource
    private NoticeService noticeService;

    @Test
    void contextLoads() throws IOException {
        System.out.println(noticeService.getNoticeInfoList());
    }
}

可以看到,可以正常地输出json文件中的内容,说明我们的程序是正确的。

最后

本文分享了SpringBoot工程读取项目资源目录下的文件的相关方法,分享的原因,是看到很多人使用了原始的文件IO的API,这没必要,SpringBoot已经为我们封装提供好了很多优雅的API了。作为开发者,连API的使用,我们也得与时俱进。

到此这篇关于SpringBoot读取资源目录中JSON文件的文章就介绍到这了,更多相关SpringBoot读取资源JSON文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Spring Boot 从静态json文件中读取数据所需字段

    •在实体中,通常使用类似字典表的文件来表示属性,文件大都配置在配置文件中,也可以是静态文件,本次记录如何从静态json文件中读取所需字段. 1.文件格式以及路径 2.加载文件 import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @Value("classpath:static/data/area.json") private Res

  • springboot openfeign从JSON文件读取数据问题

    对openfeign不清楚的同学可以参考下我的这篇文章:springboot~openfeign从此和httpClient说再见 对于openfeign来说,帮助我们解决了服务端调用服务端的问题,你不需要关心服务端的URI,只需要知道它在eureka里的服务名称即可,同时你与服务端确定了服务方法的参数和返回值之后,我们可以在单元测试时mock这些服务端方法即可,真正做到了单元测试,而不需要与外界资源进行交互. 今天主要说一下在openfeign里读取JSON文件的问题,我们将测试所需要的数据存储

  • SpringBoot读取资源目录中JSON文件的方法实例

    目录 前言 思路 示例 1.Maven依赖 2.json资源文件 3.读取json的Service 4.测试接口 最后 前言 最近在做一个公共相关的内容,公告里边的内容,打算做成配置化的. 但是考虑到存储到数据库,需要建立数据库表: 存储到配置组件中,担心配置组件存储不下: 于是决定先暂时存储到项目中的资源目录中,以JSON的格式存储,待观察公告这一模块的需求变更如何,再另行做打算. 本文分享SpringBoot读取资源目录JSON配置文件的相关方法. 思路 使用Spring的ResourceU

  • 详解SpringBoot读取resource目录下properties文件的常见方式

    个人理解 在企业开发中,我们经常需要自定义一些全局变量/不可修改变量或者参数来解决大量的变量重复问题,当需要这个全局变量时,只需要从配置文件中读取即可,根据开发中常见的情况,可以分为以下两种情况,分别是: 配置文件为SpringBoot默认的application.properties文件中的自定义参数 加载自定义properties文件中的自定义参数,比如xxx.properties的自定义参数 加载SpringBoot默认的application.properties 准备工作 server

  • 利用java读取web项目中json文件为map集合方法示例

    前言 本文主要介绍了关于java读取web项目中json文件为map集合的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实例介绍 假设当前项目web目录(/resource/test.json)下有一json文件如下: [ { "path": "content_111", "title": "文章1", "imgUrl": "../../../libs/img/ppt

  • Android开发实现读取assets目录下db文件的方法示例

    本文实例讲述了Android开发实现读取assets目录下db文件的方法.分享给大家供大家参考,具体如下: 最近准备打算写一个关于天气预报的app,偶然的机会在一大神的博客上看到了一个获取天气的api,获取天气是通过城市的cityID,项目中准备通过读取weather_city.db数据库来查询cityID,这篇文章写怎么读取assets目录下的db文件,其实方法也挺简单的就是把assets目录下的db文件复制一份到"/data/data/" + packName + "/&

  • C#实现Zip压缩目录中所有文件的方法

    本文实例讲述了C#实现Zip压缩目录中所有文件的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.IO; using System.Collections; using System.IO.Compression; using System.Collections.Generic; class FolderZip { private const long BUFFER_SIZE = 20480; static void main(string[

  • Python中优雅处理JSON文件的方法实例

    目录 1. 引言 2. 什么是JSON文件? 3. 使用Python处理JSON文件 3.1. 将JSON文件读取为字典类型 3.2. 将JSON文件读取为Pandas类型 3.3. 使用Pandas读取嵌套JSON类型 3.4. 访问特定位置的数据 3.5. 导出JSON 3.6. 格式化输出 3.7. 输出字段排序 4.总结 5.参考 1. 引言 在本文中,我们将学习如何使用Python读取.解析和编写JSON文件. 我们将讨论如何最好地处理简单的JSON文件以及嵌套的JSON文件,当然我们

  • PowerShell移动目录中指定文件的方法(非全部文件)

    小编在做一个小功能的时候,遇到一个功能,就是把一个目录中的指定条件的文件,移动到另外一个目录.这是需求,然后我们来分析下该怎么实现. 首先获取一个目录下子项目,第一时间可以想到Get-ChildItem,但我们之前用得太多了,这次小编想换个花样,我们就用Get-Item,然后用通配符来包括所有的子项目.当然,如果你需要指定的文件是以文件名来匹配的,那可以直接在这里使用匹配规则. 然后从选出来的子项目中,筛选中文件来.这个也是一个非常常用的功能,那就是判断PSIsContainer属性是否为$fa

  • Java删除文件、目录及目录下所有文件的方法实例

    前言 本文主要实现的功能是删除某个目录及目录下的所有子目录和文件,涉及到的知识点:File.delete()用于删除"某个文件或者空目录"!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除. 具体代码示例如下: import java.io.File; public class DeleteDirectory { /** * 删除空目录 * @param dir 将要删除的目录路径 */ private static void doDeleteEmptyDir(String

  • Springboot 项目读取Resources目录下的文件(推荐)

    需求描述:企业开发过程中,经常需要将一些静态文本数据放到Resources目录下,项目启动时或者程序运行中,需要读取这些文件. 读取Resources目录下文件的方法 /** * @Description: 读取resources 目录下的文件 * @Author: ljj * @CreateDate: 2020/11/3 17:20 * @UpdateUser: * @UpdateDate: * @UpdateReakem * @param filePath * @Return: java.l

  • 在vue中读取本地Json文件的方法

    其实关于这个问题,网上已经可以找到些方法,不过基本上没有完整的,或者是其中有些坑,下面写一下自己的亲身实践. 使用vue读取本地json文件需要安装vue-resource插件,然后使用它的$http.get来读取json文件. json文件应该是必须放在static目录下 然后使用npm install 命令安装vue-resource,太慢的话就使用淘宝镜像安装,安装完成后先引用这个组件. 在main.js文件中添加: import VueResource from 'vue-resourc

随机推荐