SnakeYAML-如何使用特定变量名转储YAML文件

SnakeYAML-如何使用特定变量名转储YAML文件,yaml,snakeyaml,Yaml,Snakeyaml,我有一个POJO,看起来像这样: public class Foo { private String barA; private String barB; public void setBarA(String barA) { this.barA = barA; } public void setBarB(String barB) { this.barB = barB; } public String g

我有一个POJO,看起来像这样:

public class Foo {
    private String barA;
    private String barB;

    public void setBarA(String barA) {
        this.barA = barA;
    }

    public void setBarB(String barB) {
        this.barB = barB;
    }

    public String getBarA() {
        return barA;
    }

    public String getBarB() {
        return barB;
    }
}
Representer representer = new Representer();
representer.addClassTag(Foo.class, tag.MAP);
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
Yaml yaml = new Yaml(representer, options);
StringWriter writer = new StringWriter();
yaml.dump(foo, writer);
barA
barB
bar_a
bar_b
我将其转换为YAML的代码如下所示:

public class Foo {
    private String barA;
    private String barB;

    public void setBarA(String barA) {
        this.barA = barA;
    }

    public void setBarB(String barB) {
        this.barB = barB;
    }

    public String getBarA() {
        return barA;
    }

    public String getBarB() {
        return barB;
    }
}
Representer representer = new Representer();
representer.addClassTag(Foo.class, tag.MAP);
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
Yaml yaml = new Yaml(representer, options);
StringWriter writer = new StringWriter();
yaml.dump(foo, writer);
barA
barB
bar_a
bar_b
使用SnakeYAML的输出如下所示:

public class Foo {
    private String barA;
    private String barB;

    public void setBarA(String barA) {
        this.barA = barA;
    }

    public void setBarB(String barB) {
        this.barB = barB;
    }

    public String getBarA() {
        return barA;
    }

    public String getBarB() {
        return barB;
    }
}
Representer representer = new Representer();
representer.addClassTag(Foo.class, tag.MAP);
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
Yaml yaml = new Yaml(representer, options);
StringWriter writer = new StringWriter();
yaml.dump(foo, writer);
barA
barB
bar_a
bar_b
但是,在输出中,我希望变量的命名约定如下所示:

public class Foo {
    private String barA;
    private String barB;

    public void setBarA(String barA) {
        this.barA = barA;
    }

    public void setBarB(String barB) {
        this.barB = barB;
    }

    public String getBarA() {
        return barA;
    }

    public String getBarB() {
        return barB;
    }
}
Representer representer = new Representer();
representer.addClassTag(Foo.class, tag.MAP);
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
Yaml yaml = new Yaml(representer, options);
StringWriter writer = new StringWriter();
yaml.dump(foo, writer);
barA
barB
bar_a
bar_b

我如何使用SnakeYAML实现这一点?我想澄清一下,我不想更改Java变量的命名约定。我相信这可能是使用
TypeDescription
或某种序列化实现的,但我不确定具体如何实现这一点。

正如我在回答另一个问题时提到的,由于以下原因,目前不可能实现。