簡體   English   中英

解析Yaml文件時出錯-無法為JavaBean創建屬性

[英]Error when parsing Yaml file - Cannot create property for JavaBean

Yaml文件包含:

test:
  subHeading: "1234"

Model.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文件。 您必須通過以下方式簡化解決方案:

  1. 簡化模型
  2. 使用Jackson
  3. 如果屬性與注釋中的值具有相同的名稱,請刪除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'}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM