簡體   English   中英

如何在Dropwizard中將yml文件讀取到Java哈希圖中

[英]How to read a yml file into a java hashmap in dropwizard

在我的config.yml中,我有一個像這樣的配置

myObject:
  key1: value1
  key2:value2
  key3: value3

然后,我有一個Dropwizard Configuration類,

public class MyObject {

String key1;
String value1;
String key2;
.. so on

}

如何讀取yml文件,使其僅讀取一個哈希圖? 這可能嗎?

您可以使用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}}

希望對您有所幫助!

阿圖爾

創建Dropwizard應用程序時, YourApplication類將需要擴展Application<YourConfiguration> 因此,無論如何,您都需要創建一個YourConfiguration類。 現在,在YourConfiguration類內,如果要避免列出所有屬性和相應的getter / setter,可以將單個屬性定義為Map並在yaml文件中先前定義的屬性下指定所有鍵值。

配置文件

myMap:
  key1: value1
  key2: value2

YourConfiguration.class

class YourConfiguration extends Configuration {
  Map<String, String> myMap;

  Map<String, String> getConfigMap() {
    return myMap;
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM