将YAML文件转储到Java类,其字段包含连字符

问题描述 投票:0回答:1

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

我已经看到有关主题的this答案,但是没有关于发生的事情或toCameName()的方法的解释。

Yaml文件

field-with-hyphen: 1

目标

public int fieldwithhypehen;

或任何使它可以丢弃的东西。

java snakeyaml
1个回答
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解析器实现(我也对其进行了测试)

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.