在java中没有使用jackson加载Yaml文件值

时间:2017-01-13 12:04:06

标签: java jackson yaml pojo snakeyaml

我想加载一个yaml文件&将它存储在Config.java中。

这是我的yaml文件:(它更大。我给的是简化版)

---
application:
  admin:
    jobInterValTime: 1440
    customer: lc
system:
  mongo:
    host: localhost
    port: 27017
    dbName: LC_Test
    collections:
      groupsCollection: groups
      membershipCollection: memberships
      personsCollection: persons

这是Config.java:

public class Config {
  private Application application;
  private System system;
  //Getter setter
}

Application.java

public class Application {
    private Admin admin;    
    //Getter Setter
}

Admin.java

public class Admin {
    private String jobInterValTime;
    private String customer;
    //Getter Setter
}

System.java

public class System {

    private Mongo mongo;       
    //Getter Setter
}

Mongo.java

public class Mongo {
    private String host;
    private String port;
    private String dbName;
    private Map<String, String> collections;
    //Getter Setter
}

但是application&amp; system内的Config.java对象变为空。没有异常发生。有人可以帮忙吗?

这是我写的。

Config config = null;
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
try{
    config = objectMapper.readValue(new File("src/test/java/resources/test1.yaml"), Config.class);
    //System.out.println(application.getAdmin().getCustomer());
    // System.out.println(unidataConfig.getApplication().getAdmin().getCustomer());

} catch(Exception e) {
    e.printStackTrace();
}

2 个答案:

答案 0 :(得分:0)

我不知道这里的根本原因,代码看起来不错。但您可以尝试的一件事是先将内容读作MapJsonNode,然后查看结构的外观。可能存在不匹配。

答案 1 :(得分:0)

我解决了这个问题。这个错误非常愚蠢。在一个setter方法中,我写的是这样的:var1 = var1而不是this.var1 = var1