Java 用Jackson解析yaml文件
我试图解析一个yaml文件,如下所示(它是动态的,所以这只是一个示例): 我创建了3个类,Vehicle、VehicleInfo和MyYamlFile,如下所示 车辆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
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;
}
}