java - 解析 Yaml 文件时出错 - 无法为 JavaBean 创建属性
问题描述
Yaml
文件包含:
test:
subHeading: "1234"
模型.java
class Model{
@JsonProperty("test")
private SubHeading subHead;
private class SubHeading{
@JsonProperty("subHeading")
private String text;
}
我尝试Yaml
按如下方式解析上述内容:
Yaml yaml = new Yaml(new Constructor(Model.class));
System.out.println(yaml.load(new FileReader(PATH)).toString());
我立即得到一个例外:
Cannot create property=test for JavaBean=Model@13a5fe33
in 'reader', line 1, column 1:
test:
知道我做错了什么以及我可以在这里改变什么吗?
解决方案
您首先使用Jackson
注释而不是SnakeYaml
库来读取yaml
文件。您必须通过以下方式简化您的解决方案:
- 简化模型
- 利用
Jackson
Jackson
在属性与注释中的值同名的情况下删除注释。
模型在新文件中
创建每个类。public class
public class Model {
private SubHeading test;
public SubHeading getTest() {
return test;
}
public void setTest(SubHeading test) {
this.test = test;
}
@Override
public String toString() {
return "Model{" +
"test=" + test +
'}';
}
}
和
public class SubHeading {
private String subHeading;
public String getSubHeading() {
return subHeading;
}
public void setSubHeading(String subHeading) {
this.subHeading = subHeading;
}
@Override
public String toString() {
return "SubHeading{" +
"subHeading='" + subHeading + '\'' +
'}';
}
}
示例用法:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
public class YamlTest {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
mapper.enable(SerializationFeature.INDENT_OUTPUT);
String text = "test:\n" +
" subHeading: \"1234\"";
Model model = mapper.readValue(text, Model.class);
System.out.println(model);
}
}
上图:
Model{test=SubHeading{subHeading='1234'}}
推荐阅读
- typescript - Swagger OpenAPI 3.0 请求中的空身份验证标头
- spring-cloud-gateway - spring-cloud-starter-gateway:3.0.1 和 spring-cloud-starter-sleuth:3.0.1 不会在日志中生成 traceid 和 spanid
- sql - sql 返回导致错误“DELETE 语句与 REFERENCE 约束冲突”的行的 id
- python - pyodbc 的 Cnn 字符串,带有“trusted_connection=yes”而不是用户 ID 和密码
- python - Pandas 将唯一随机数应用于 nan 否则转到下一行
- r - 如何在保持控制变量不变的同时同时使用 predict 和 expand_grid?
- microsoft-graph-teams - 是否有任何 Microsoft API 可以从频道 ID 获取组 ID?
- android - how to fix issue with installing react native environment
- javascript - Code editor not displaying text correctly with react-live library
- python - I am not able to make the favourite and unfavourite view work in Django application