从YAML文件读取时出现JsonMappingException:由于输入结束而没有要映射的内容

时间:2016-03-10 13:12:48

标签: java jackson yaml

我一直在创建类,它负责从yml文件中获取所有设置。这个类看起来像这样:

public class TestsConfiguration extends Configuration {
    public TestsConfiguration() {
        this.sourceYAML = this.getClass().getResourceAsStream("test.yml");
    }
    public TestsConfiguration(File sourceYAML) throws FileNotFoundException {
        this.sourceYAML = new FileInputStream(sourceYAML);
    }

    public class PropertiesContainer {
        @JsonProperty
        private String test;

        public String getTest() {
            return test;
        }

        public void setTest(String test) {
            this.test = test;
        }
    }

    private final ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    private final InputStream sourceYAML;

    public PropertiesContainer getProperties() throws IOException {
        final ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
        return mapper.readValue(sourceYAML, PropertiesContainer.class);
    }
}

但是我在 mapper.readValue(...)方法中得到了例外

  

com.fasterxml.jackson.databind.JsonMappingException:由于输入结束而没有要映射的内容

这是我的yml文件:

test: "hello"

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

看起来多次调用getProperties()方法。

在构造函数中初始化的输入流字段。它有一个文件指针变量,每次读取时都会更新。输入流到达文件末尾时发生异常。

尝试将YAML解析移动到构造函数。