簡體   English   中英

從資源中加載 json 文件

[英]Load json file from resource

我從資源加載 json 文件時遇到問題。 這是我的代碼:

public void setConfiguration() {
        try {
            ClassLoader cl = this.getClass().getClassLoader(); 
            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cl);
            Resource[] resources = resolver.getResources("classpath*:/configuration.json");
            if (resources.length == 0) {
                log.warn("Configuration could not be loaded from file! Using default configuration.");
                configuration = getDefaultConfiguration();
            }
            for (Resource resource: resources){
                configuration = new ObjectMapper().readValue(resource.getInputStream(), Configuration.class);
                if (configuration != null) {
                    log.debug("Configuration found (using PathMatchingResourcePatternResolver)");
                    break;
                }
            }
        } catch (Exception e) {
            log.warn("Configuration could not be loaded from file! Using default configuration.", e);
            configuration = getDefaultConfiguration();
        }
    }

它總是采用默認配置。 有誰知道為什么它不從 json 文件中獲取值?

你需要使用:
("classpath:"+this.config.getClassPathRoot() + "/**/*"+jsonFileExtension)
用於獲取資源。

我這也不起作用嘗試通過調用默認構造函數來使用 object: PathMatchingResourcePatternResolver pathResolver = new PathMatchingResourcePatternResolver();

try {
        Resource resource = new ClassPathResource("classpath:configuration.json");
        InputStream resourceInputStream = resource.getInputStream();
        if (resourceInputStream == null) {
            log.warn("Configuration could not be loaded from file! Using default configuration.");
            configuration = getDefaultConfiguration();
        }
        else {
            configuration = new ObjectMapper().readValue(resourceInputStream, Configuration.class);
            if (configuration != null) {
                log.debug("Configuration found (using PathMatchingResourcePatternResolver)");
                break;
            }
        }
    } catch (Exception e) {
        log.warn("Configuration could not be loaded from file! Using default configuration.", e);
        configuration = getDefaultConfiguration();
    }

如果你的項目是 maven 項目,也許你應該在你的 pom.xml 中添加一些配置。

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.json</include>
            </includes>
        </resource>
    </resources>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM