首页 > 解决方案 > 无法为 tag:yaml.org,2002 构造 java 对象

问题描述

我正在尝试yaml使用 java 代码读取文件内容,但无法使用 java 模型类构造 java 对象

请找到我的person.yaml文件

name: Joe
phone: 111-111-11111
address: Park Dr, Charlie Hill

请找到我的模型班

public class Person {

      private String name;
      private String phone;
      private String address;

}

请找到我的服务方法:

public class PersonsService {

    public static void main(String args[]) throws IOException {

         Yaml yaml = new Yaml();
          try (InputStream in = PersonsService.class
                  .getResourceAsStream("person.yaml")) {
              Person person = yaml.loadAs(in, Person.class);
              System.out.println(person);
          }

    }

}

我收到以下错误:

Exception in thread "main" Can't construct a java object for tag:yaml.org,2002:com.javaproject.snakeyaml.model.Person; exception=Cannot create property=name for JavaBean=com.javaproject.snakeyaml.model.Person@77a567e1; No JavaBean properties found in com.javaproject.snakeyaml.model.Person

在“读者”第 1 行第 1 列中:姓名:Joe ^

标签: javayaml

解决方案


该错误解释了一切:

无法为标记构造 java 对象:yaml.org,2002:com.javaproject.snakeyaml.model.Person ... 在 com.javaproject.snakeyaml.model.Person 中找不到 JavaBean 属性

因此,您必须为您的Person类提供 getter 和 setter,以便库使用它们为您的Person类对象设置值。可以在此处找到有关 JavaBeans 属性的更多信息。


推荐阅读