在Spring Boot应用程序启动后,您可以通过多种方式读取指定JSON资源文件。以下是一些常用的方法:

  1. 使用ResourceLoader
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.ResourceLoader;
    import org.springframework.stereotype.Component;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    @Component
    public class JsonFileReader {
        @Autowired
        private ResourceLoader resourceLoader;
        public String readJsonFile(String filePath) {
            StringBuilder json = new StringBuilder();
            try {
                Resource resource = resourceLoader.getResource("classpath:" + filePath);
                InputStream inputStream = resource.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                while ((line = reader.readLine()) != null) {
                    json.append(line);
                }
                reader.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return json.toString();
        }
    }
    
  2. 使用ClassPathResource
    import org.springframework.core.io.ClassPathResource;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.stream.Collectors;
    public class JsonFileReader {
        public String readJsonFile(String filePath) {
            StringBuilder json = new StringBuilder();
            try {
                ClassPathResource classPathResource = new ClassPathResource(filePath);
                InputStream inputStream = classPathResource.getInputStream();
                String content = new BufferedReader(new InputStreamReader(inputStream)).lines()
                        .collect(Collectors.joining("\n"));
                json.append(content);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return json.toString();
        }
    }
    
  3. 使用File类(不推荐)
    这不是推荐的方法,因为它假设JSON文件位于文件系统的固定位置,而不是在应用程序的类路径中。这在打包为JAR时可能不会正常工作。
    import java.nio.file.Files;
    import java.nio.file.Paths;
    public class JsonFileReader {
        public String readJsonFile(String filePath) {
            StringBuilder json = new StringBuilder();
            try {
                Files.lines(Paths.get(filePath)).forEach(json::append);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return json.toString();
        }
    }
    
  4. 使用@ValueResource
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.io.Resource;
    import org.springframework.stereotype.Component;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.stream.Collectors;
    @Component
    public class JsonFileReader {
        @Value("classpath:config.json")
        private Resource resource;
        public String readJsonFile() {
            try {
                InputStream inputStream = resource.getInputStream();
                return new BufferedReader(new InputStreamReader(inputStream))
                        .lines().collect(Collectors.joining("\n"));
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    

在这些示例中,filePath是相对于类路径的JSON文件路径。例如,如果您有一个名为config.json的文件位于src/main/resources目录下,那么filePath将是config.json
请注意,如果您正在读取配置文件,Spring Boot提供了更高级的配置文件处理机制,例如使用@ConfigurationProperties@Value注解直接将配置属性注入到您的bean中。

GitHub 加速计划 / js / json
18
5
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:2 个月前 )
960b763e 5 个月前
8c391e04 8 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐