Java 用Jackson解析yaml文件

Java 用Jackson解析yaml文件,java,yaml,Java,Yaml,我试图解析一个yaml文件,如下所示(它是动态的,所以这只是一个示例): 我创建了3个类,Vehicle、VehicleInfo和MyYamlFile,如下所示 车辆 public class Vehicle { @JsonProperty private List<VehicleInfo> info; // getter methods ommitted } public class MyYamlFile { @JsonProperty private

我试图解析一个yaml文件,如下所示(它是动态的,所以这只是一个示例):

我创建了3个类,Vehicle、VehicleInfo和MyYamlFile,如下所示

车辆

public class Vehicle {
  @JsonProperty
  private List<VehicleInfo> info;
  // getter methods ommitted
}
public class MyYamlFile {
    @JsonProperty
    private List<Vehicle> vehicles;
    @JsonProperty
    private int size;
    // getter methods ommitted
}
MyYamlFile

public class Vehicle {
  @JsonProperty
  private List<VehicleInfo> info;
  // getter methods ommitted
}
public class MyYamlFile {
    @JsonProperty
    private List<Vehicle> vehicles;
    @JsonProperty
    private int size;
    // getter methods ommitted
}
我犯了一个错误

com.fasterxml.jackson.databind.exc.mismatchdinputException:无法反序列化START_对象标记之外的java.util.ArrayList实例 在[来源:(文件);第3行,第3列](通过引用链:MyYamlFile[“vehicles”])


知道为什么吗?

您正在尝试将文件解析到
列表中

根据:

列表的所有成员都是从相同缩进级别开始的行,以“-”(破折号和空格)开头:


然而,在您的情况下,所有应该是列表成员的项目都具有以下格式
'1':
,这是不正确的。

Ah thx用于该链接。为了便于将来参考,我将车辆列表更改为地图,从VehicleInfo中获取属性并将其放入VehicleInfo中并删除VehicleInfo类,从而修复了错误
public class Fix {
    public static void main(String[] args) {
        MyYamlFile file = readYaml(new File("E:\\dev\\FrihedenBilInventoryFix\\VehicleInventory.yaml"));
        System.out.print("test: " + file.getSize());
    }
    public static MyYamlFile readYaml(final File file) {
        final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); // jackson databind
        try {
            return mapper.readValue(file, MyYamlFile.class);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}