![](/img/trans.png)
[英]Annotations when parsing YAML file to Configuration subclass in Dropwizard
[英]How can I read yaml (Configuration) file as JSON in dropwizard?
我想將配置yaml文件解析為Dropwizard中的JSON對象。 與在Python和Ruby中一樣,我們可以直接將yaml文件讀取為JSON:
require 'yaml'
conf = YAML.load_file('some.yml')
puts conf.<some key>
我想遵循相同的協議,並且不想創建一個單獨的類來映射yaml結構,但是不確定如何在Java中實現它。
如果我理解正確,則不是要定義一個類來表示JSON或YAML的結構,而是要檢索一個對象,該對象可以使您以通用方式訪問JSON對象。
即使這有點與dropwizard想要做的事情相反(即,鍵入類來訪問配置數據),它還是相對容易的:
ObjectMapper
實例:一個由dropwizard提供的實例,或者您自己擁有一個支持YAML的實例(請參見下面的示例)。 readTree
方法將輸入轉換為JsonNode
,從而使您可以訪問內存中的JSON / YAML對象。 請參見ObjectMapper#readTree
和類似方法。
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
JsonNode json = mapper.readTree(new File("some.yml"));
System.out.println(json.get("test"));
Jackson可以解析yaml並格式化為JSON。 在這里查看示例。
您可以只使用DropWizard中的Configuration對象,該對象是默認對象或已創建的自定義對象,用於保存其他參數。 該對象在Application類上可用,尤其是在“運行”方法下。 使用DW配置示例:
public class ExampleConfiguration extends Configuration {
@Valid
@NotNull
private MessageQueueFactory messageQueue = new MessageQueueFactory();
@JsonProperty("messageQueue")
public MessageQueueFactory getMessageQueueFactory() {
return messageQueue;
}
@JsonProperty("messageQueue")
public void setMessageQueueFactory(MessageQueueFactory factory) {
this.messageQueue = factory;
}
}
您可以從YAML文件中獲取/設置所有屬性,如下所示:
public class MyApplication extends Application<ExampleConfiguration> {
...
public void run(ExampleConfiguration configuration, Environment environment) {
configuration.getMessageQueueFactory();
configuration.getServerFactory();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.