spring-boot - SpringBoot使用@Value注解读取一个json文件并将其转换为map
问题描述
我是 SpringBoot 的新手,我需要加载一个 json 文件并将其转换为 Java 映射。
代码:
@Service
public class StatisticsService {
@Value("classpath:/mocks/Docs.json")
private Resource resourceFile;
private ObjectMapper mapper = new ObjectMapper();
// rest of the code ...
private void convertData() throws JsonParseException, JsonMappingException, IOException {
Map<String, Object> map = mapper.readValue(resourceFile.getInputStream(), typeRef);
System.out.println(map);
}
}
我试图更改 @Value 注释的类路径值,但对我不起作用!
更新
我认为在到达 Service 构造函数时 resourceFile 为空,但如果我稍后到达该服务(通过获取一个入口点,例如 localhost:8080/statistics),那么它就会被填充。
解决方案
在DocsConditionNew.json
您的类路径中,只需使用:
@Value("classpath:DocsConditionNew.json")
private Resource resourceFile;
@Value
也支持其他前缀,例如:
file:
用于从类路径中引用文件,但在您的计算机上,以及
URL:
用于远程文件。