使用Apache commons配置从字符串创建JSON配置

时间:2014-07-11 12:55:13

标签: java json apache-commons apache-commons-config

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

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

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

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

2 个答案:

答案 0 :(得分:1)

我更倾向于使用JSON而不是XML,但是没有为库编写我自己的JSON垫片,我没有看到任何内置的'溶液

答案 1 :(得分:0)

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

Configurations configs = new Configurations();

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

不幸的是,我还没有找到一种使JSONConfiguration精美印刷的方法。覆盖类不是一个选择,因为它使用私有字段。但是,提供您自己的类(复制JSONConfiguration)并修改write方法很简单:

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

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

}