首页 > 解决方案 > 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),那么它就会被填充。

标签: spring-boot

解决方案


DocsConditionNew.json您的类路径中,只需使用:

@Value("classpath:DocsConditionNew.json")
private Resource resourceFile;

@Value也支持其他前缀,例如:

file:用于从类路径中引用文件,但在您的计算机上,以及
URL:用于远程文件。


推荐阅读