java - 无法为 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 ^
解决方案
该错误解释了一切:
无法为标记构造 java 对象:yaml.org,2002:com.javaproject.snakeyaml.model.Person ... 在 com.javaproject.snakeyaml.model.Person 中找不到 JavaBean 属性
因此,您必须为您的Person
类提供 getter 和 setter,以便库使用它们为您的Person
类对象设置值。可以在此处找到有关 JavaBeans 属性的更多信息。
推荐阅读
- c - _declspec 应该放在哪里?
- entity-framework - 将引用表数据设为只读 - EF Core
- ios - 如何使用 int 值将项目添加到表视图
- jquery - 如何重用自定义 jQuery 验证方法?
- android - 无法在 Parameterized.class junit 测试中未调用 Looper.prepare() 的线程内创建处理程序
- c# - C# UDP 客户端读取多播 IP(本地接口),并将单播 UDP 发送到 VPN
- javascript - 如何用 sinon/chai 测试 axios 请求参数
- c# - 如何从 IP 地址获取设备的制造商名称
- python - 用于使用 Amazon Cognito 进行身份验证的 Python 和 Flask
- html - 为子元素设置边距会影响父元素的大小吗?