【发布时间】:2014-12-14 19:08:26
【问题描述】:
我有一个像这样的简单 YAML 数据,我正在尝试使用 SnakeYaml 将其转换为名为 Person 的 POJO 对象。
age: 123
name: Jackson
phone:
number: 123456
这是执行此操作的 Groovy 代码。
@ToString
class Person{
def name
def age
Tel phone
}
@ToString
class Tel{
def number
}
Constructor c = new Constructor(Person.class);
TypeDescription t = new TypeDescription(Person.class);
t.putListPropertyType("phone", Tel.class);
c.addTypeDescription(t);
def person = new Yaml(c).load(input)
println person
这会按预期创建Person 对象,其中包含Tel。
但是,当我尝试按如下方式在 yaml 中传递Person 列表时,出现错误。
- age: 123
name: Jackson
phone:
number: 123456
- age: 234
name: Jackson
phone:
number: 123456
这是我得到的错误
Caused by: org.yaml.snakeyaml.error.YAMLException: No suitable constructor with 2 arguments found for class soapunit.Person
at org.yaml.snakeyaml.constructor.Constructor$ConstructSequence.construct(Constructor.java:587)
at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:340)
... 8 more
【问题讨论】: