我想知道是否可以让snakeyaml将yaml文档加载到javabean中,并且如果无法找到文档中条目的匹配项作为javabean属性,它将把它放置到javabean中的通用映射中。 ..

例如

public class Person {
  private String firstName;
  private String lastName;
  private Map<String, Object> anythingElse;

  //Getters and setters...
}


如果我加载的文档看起来像:

firstName: joe
lastName: smith
age: 30


由于age不是bean中的属性,因此我想将{age,30}添加到a​​nyelse映射中。

可能?

谢谢。

最佳答案

不,这不可能。

根据我的经验和尝试,它不起作用。如果您想将文件加载到对象中,则该对象类中的所有属性都必须具有getter和setter方法(即,该类必须是JavaBean,请参见Wikipedia)。

我使用了您的Person类(有关适当的JavaBeanClass,请参见Wiki页面),其代码为:http://codepaste.net/dbtzqb

我的错误消息是:“第3行,第4列:在类:Person上找不到属性'age'”,因此证明此简单程序不能具有“意外”属性。这是我快速简便的结论。我没有进行广泛尝试,因此可能会出现,但我不知道这种方式(您必须绕过读取方法和JavaBean)。我使用过YamlBeans(https://code.google.com/p/yamlbeans/),所以有些不同,但是我发现它更容易且可以工作;]

希望能有所帮助!

编辑

很抱歉撞到这个,迟到总比没有好!在发布答案之前,我没有看到该发布日期。但是希望它可以帮助其他寻求帮助的人:3

关于java - Snakeyaml加载到JavaBean,并且如果未在 map 上找到该属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11691659/

10-10 10:29