Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jackson数据绑定解析yaml导致不匹配InputException_Java_Jackson_Yaml_Fasterxml - Fatal编程技术网

Java 使用jackson数据绑定解析yaml导致不匹配InputException

Java 使用jackson数据绑定解析yaml导致不匹配InputException,java,jackson,yaml,fasterxml,Java,Jackson,Yaml,Fasterxml,我试图阅读的yaml格式如下 - name: storage scm: git src: git+https://bitbucket.org/cer/linux_storage_jenkins.git version: '5' - name: linux_jenkins scm: git src: git+https://bitbucket.org/cer/linux_jenkins.git version: '8' 我的模型很简单 public class Requi

我试图阅读的yaml格式如下

- name: storage
  scm: git
  src: git+https://bitbucket.org/cer/linux_storage_jenkins.git
  version: '5'
- name: linux_jenkins
  scm: git
  src: git+https://bitbucket.org/cer/linux_jenkins.git
  version: '8'
我的模型很简单

public class Requirementsyml {
    //setter and getter in place
    private List<Requirement> items;
}

public class Requirement {
    private String name;
    private String scm;
    private String src;
    private String version;
}
然而,我得到了以下例外
com.fasterxml.jackson.databind.exc.mismatchdinputException:无法反序列化Requirementsyml的实例超出起始\u数组标记

由于模型有一个列表,我认为输入不应该不匹配。
我尝试将yaml文件作为java文件对象提供,而不是将其内容作为字符串提供。结果是一样的。我遗漏了什么?

yaml结构应该包含
数组/列表

items:
- name: storage
  scm: git
  src: git+https://bitbucket.org/cer/linux_storage_jenkins.git
  version: '5'
- name: linux_jenkins
  scm: git
  src: git+https://bitbucket.org/cer/linux_jenkins.git
  version: '8'
或者,您可以将其作为需求列表阅读,而不必更改yaml

@Test
void test() throws IOException {
    ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    List<Requirement> requirements = mapper.readValue(new File("src/test/resources/requirements.yml"), new TypeReference<List<Requirement>>() {});
    assertEquals(2, requirements.size());
}
@测试
void test()引发IOException{
ObjectMapper mapper=newObjectMapper(newYamlFactory());
List requirements=mapper.readValue(新文件(“src/test/resources/requirements.yml”)、新的TypeReference(){});
资产质量(2,要求.size());
}
还要确保
Requirement
和其他类没有args构造函数,否则在
ObjectMapper

@Test
void test() throws IOException {
    ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    List<Requirement> requirements = mapper.readValue(new File("src/test/resources/requirements.yml"), new TypeReference<List<Requirement>>() {});
    assertEquals(2, requirements.size());
}