思路使用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的service3.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 */@servicepublic 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;@springboottestclass springbootjsonapplicationtests { @resource private noticeservice noticeservice; @test void contextloads() throws ioexception { system.out.println(noticeservice.getnoticeinfolist()); }}
可以看到,可以正常地输出json文件中的内容,说明我们的程序是正确的。
以上就是springboot怎么读取资源目录中json文件的详细内容。