我正在尝试使用SnakeYAML将YAML文件转储到Java类,但是该字段名称中带有连字符,并且Java变量不能包含-。
我已经看到this关于这个问题的答案,但是没有关于发生的事情或方法upgrade brew
的解释。
Yaml文件
toCameName()
目标
field-with-hyphen: 1
或其他使它可以丢弃的东西。
答案 0 :(得分:0)
感谢Clashsoft向我指出正确的方向。我能够做一些进一步的研究,并构造出以下方法,该方法将带有空格和连字符的值传输到camelCase。
field-with-hyphens and spaces
变成fieldWithHyphensAndSpaces
public class CamelCase {
public static String camelize(String input) {
for (int i = 0; i < input.length(); i++) {
if(input.substring(i, i+1).equals("-")) {
input.replace("-", "");
input = input.substring(0, i) + input.substring(i+1, i+2).toUpperCase() + input.substring(i+2);
}
if(input.substring(i, i+1).equals(" ")) {
input.replace(" ", "");
input = input.substring(0, i) + input.substring(i+1, i+2).toUpperCase() + input.substring(i+2);
}
}
return input;
}
}
并使用SnakeYAML Parser实现(我也对其进行了测试)
Constructor c = new Constructor(map);
c.setPropertyUtils(new PropertyUtils() {
@Override
public Property getProperty(Class<? extends Object> type, String name){
if ( name.indexOf('-') > -1 ) {
name = CamelCase.camelize(name);
}
return super.getProperty(type, name);
}
});
parser = new Yaml(c);
configFile = new File(FileConstants.getConfigDir() + relativePath);
}