首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在YAML文件中为简单的POJO定义映射?

如何在YAML文件中为简单的POJO定义映射?
EN

Stack Overflow用户
提问于 2015-12-17 15:16:41
回答 2查看 102.4K关注 0票数 46

我使用snakeYaml将某些配置/属性值解析为Configuration对象。

我的yaml文件看起来像这样-

代码语言:javascript
复制
#Thread
batchLimit: 1000
threadCountLimit: 2

#Some More Config
key: value

#MAP
keyMapping: <What goes here?>

我的配置类看起来像这样-

代码语言:javascript
复制
public class Configuration{
  int batchlimit;
  int threadCountLimit;
  ...
  Map<String,String> keyMapping;
}

如何在YAML文件中定义keyMapping,使其直接通过SnakeYAML读取?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-17 15:21:08

下面是它的外观:

代码语言:javascript
复制
#MAP
keyMapping: 
    key1: value1
    key2: value2

通常,YAML格式自然支持键-值对。看看下面的教程(仅举个例子):https://github.com/Animosity/CraftIRC/wiki/Complete-idiot's-introduction-to-yaml

或者只是搜索"yaml地图“来获取更多细节。

票数 97
EN

Stack Overflow用户

发布于 2020-05-11 13:21:04

带有键值对的Yaml文件"AppParams.yml“:

代码语言:javascript
复制
someConfig:
    key1: value1
    key2: value2

POJO:

代码语言:javascript
复制
public class ApplicationParameters {
    private Map<String, String> someConfig;

    public ApplicationParameters() {
    }

    public Map<String, String> getSomeConfig() {
        return someConfig;
    }

    public void setSomeConfig(Map<String, String> someConfig) {
        this.someConfig = someConfig;
    }
}

读者:

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
File paramFile = new File("AppParams.yml");
ApplicationParameters applicationParameters = mapper.readValue(paramFile, ApplicationParameters.class);

Map<String, String> someConfig = applicationParameters.getSomeConfig();

String key1Value = someConfig.get("key1");    //returns "value1"

上面的示例在POM.xml中使用了以下依赖项:

代码语言:javascript
复制
 <dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.8</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.8</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>2.9.8</version>
    </dependency>
</dependencies>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34328749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档