在我的config.yml中,我有这样的配置
myObject:
key1: value1
key2:value2
key3: value3
然后我有一个Dropwizard配置类
public class MyObject {
String key1;
String value1;
String key2;
.. so on
}
如何读取yml文件,使其仅作为一个哈希图读取?这可能吗?
答案 0 :(得分:2)
您可以使用jackson的objectmapper读取yaml文件,然后将其指定为所需的任何类型。您上面的yaml的一个非常基本的示例是:
文件test_yaml.yaml:
myObject:
key1: value1
key2: value2
key3: value3
代码:
package yaml;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
public class YamlMapParser {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
InputStream resource = YamlMapParser.class.getResourceAsStream("/yaml/test_yaml.yaml");
Map readValue = mapper.readValue(resource, Map.class);
System.out.println(readValue);
}
}
重要的一点是给Jackson的ObjectMapper
一个YAMLFactory
来使用。
然后显示以上代码:
{myObject={key1=value1, key2=value2, key3=value3}}
希望对您有所帮助!
Artur
答案 1 :(得分:0)
在创建Dropwizard应用程序时,YourApplication
类将需要扩展Application<YourConfiguration>
。因此,无论如何,您都需要创建一个YourConfiguration
类。现在,在YourConfiguration
类内部,如果要避免列出所有属性和相应的getter / setter,可以将单个属性定义为Map
,并在以前定义的属性中指定所有键值。 yaml
文件。
config.yml
myMap:
key1: value1
key2: value2
YourConfiguration.class
class YourConfiguration extends Configuration {
Map<String, String> myMap;
Map<String, String> getConfigMap() {
return myMap;
}
}