使用包含连字符的字段将YAML文件转储到Java类

时间:2019-12-08 19:35:49

标签: java snakeyaml

我正在尝试使用SnakeYAML将YAML文件转储到Java类,但是该字段名称中带有连字符,并且Java变量不能包含-。

我已经看到this关于这个问题的答案,但是没有关于发生的事情或方法upgrade brew的解释。

Yaml文件

toCameName()

目标

field-with-hyphen: 1

或其他使它可以丢弃的东西。

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);
}