3

String是否可以在Apache commons 配置中创建一个 JSON 配置表单,以便我可以从中获取一些值?

例如,如果我有一个String包含此配置的 a,我希望能够将其转换为一个org.apache.commons.configuration2.json.JSONConfiguration,以便我可以使用该getX(nodeName)方法从中获取值(例如:config.getInt("sectionA.valueB")将返回 332):

{sectionA:{valueA:true, valueB:332}, sectionB:{valueA:124, valueB:"abc"}}

我是否必须将字符串包装在诸如 a 之类的东西中,Reader以便我可以使用配置的load(Reader)方法?如果是,那么最短和最快的方法是什么?

4

2 回答 2

1

我宁愿使用 JSON 而不是 XML,但是没有为库编写自己的 JSON shim,我没有看到任何“内置”解决方案。

于 2015-02-09T22:12:45.177 回答
0

FileBasedConfigurationBuilder使用JSONConfiguration类(版本 >= 2.2)实例化 a :

Configurations configs = new Configurations();

FileBasedConfigurationBuilder<JSONConfiguration> builder =
    configs.fileBasedBuilder(JSONConfiguration.class, file);

不幸的是,我还没有找到获得JSONConfiguration漂亮印刷品的方法。覆盖类不是一个选项,因为它使用私有字段。但是,提供您自己的类(copy JSONConfiguration)并修改 write 方法很简单:

@Override
public void write(final Writer out) throws ConfigurationException, IOException {

    this.mapper.writerWithDefaultPrettyPrinter().writeValue(out,
        constructMap(this.getNodeModel().getNodeHandler().getRootNode()));

}
于 2019-04-11T13:30:59.203 回答