使用snakeyaml将YAML转换为Java
当我试图打印出对象时,无法理解为什么在配置类的平台上会出现NullPointerException 以下是yaml文件:使用snakeyaml将YAML转换为Java,yaml,snakeyaml,Yaml,Snakeyaml,当我试图打印出对象时,无法理解为什么在配置类的平台上会出现NullPointerException 以下是yaml文件: platform: platformType: CVN hwVariant: canesVariant: HW hullNumber: XXX tri: INST 这是我的父对象类Configuration.java public class Configuration { private Platform platform; public Co
platform:
platformType: CVN
hwVariant:
canesVariant: HW
hullNumber: XXX
tri: INST
这是我的父对象类Configuration.java
public class Configuration {
private Platform platform;
public Configuration() {
}
public Platform getPlatform() {
return platform;
}
public void setPlatform(Platform platform) {
this.platform = platform;
}
@Override
public String toString() {
return platform.toString();
}
}
这是我的Platform.java:
import java.util.Map;
public class Platform {
private String platformType;
private Map<String, String> hwVariant;
private String hullNumber;
private String tri;
public Platform() {
}
public String getPlatformType() {
return platformType;
}
public Map<String, String> getHWVariant() {
return hwVariant;
}
public String getHull() {
return hullNumber;
}
public String getTri() {
return tri;
}
public void setPlatformType(String platformType) {
this.platformType = platformType;
}
public void setHWVariant(Map<String, String> hwVariant) {
this.hwVariant = hwVariant;
}
public void setHullNumber(String hullNumber) {
this.hullNumber = hullNumber;
}
public void setTri(String tri) {
this.tri = tri;
}
@Override
public String toString() {
return "platform: \n" +
" platformType: " + platformType + "\n" +
" hwVariant: " + hwVariant + "\n" +
" hullNumber: " + hullNumber + "\n" +
" tri: " + tri;
}
}
当我添加了内部嵌套hwVariant选项时,我似乎无法让它工作。如果我从yaml文件中删除hwVariant和canesVariant,尽管没有这些键值对,但效果很好。我缺少什么?将类平台的字段“hwVariant”的Getter和Setter方法更改为以下方法
public Map<String, String> getHwVariant() {
return hwVariant;
}
public void setHwVariant(Map<String, String> hwVariant) {
this.hwVariant = hwVariant;
}
publicmap getHwVariant(){
返回变量;
}
公共void setHwVariant(映射hwVariant){
this.hwVariant=hwVariant;
}
SnakeYaml在内部使用jackson将yaml文档映射到java对象。Jackson在内部调用字段的getter和setter方法,所以它希望getter和setter采用标准形式
public Map<String, String> getHwVariant() {
return hwVariant;
}
public void setHwVariant(Map<String, String> hwVariant) {
this.hwVariant = hwVariant;
}