为什么我在解析 YAML 块时会出现此错误?

Why I have this error on parsing Block of YAML?

我有这个 YAML 块:

- operationId: "getG"
  applicationName: "c"

- operationId: "get"
  applicationName: "c"

实际上我想用 YAML 的 Jackson 库解析它,我有这段代码:

public class YamlProcessor {

    ListYamlEntries> entries;
}

@Getter //lombok
@Setter //lombok
public class YamlEntries {

    @JsonProperty("applicationName")
    String applicationName;

    @JsonProperty("operationId")
    String operationId;

}
public YamlProcessor yamlParser(String file) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
        objectMapper.findAndRegisterModules();
        YamlProcessor yamlEntries = objectMapper.readValue(new File(file), YamlProcessor.class);

        yamlEntries.getEntries().forEach(valuesOfYaml -> {
                log.info("applicationName: " + valuesOfYaml.getApplicationName());
                log.info("operationId: " + valuesOfYaml.getOperationId());

        });

        return yamlEntries;
    }

但我收到此错误,我无法弄清楚原因:

Cannot deserialize instance of `[....objects.YamlEntries;` out of START_OBJECT token
 at [Source: (File); line: 10, column: 1]

谁能帮我解决一下?

我不知道你到底想解析什么,但你发布的yaml应该在一个 List<YamlEntries> 而不是 List<Map<String, YamlEntries>>

如果你想创建一个地图列表,你的 yaml 应该是这样的:

 - key1:
     operationId: "getG"
     applicationName: "c"
   key2:
     operationId: "getG"
     applicationName: "c"
    

 - otherkey1:
     operationId: "get"
     applicationName: "c"
   otherkey2:
     operationId: "getG"
     applicationName: "c"

如果你想解析 List<YamlEntries> 这应该适合你。

在 yaml 中你必须有类似

的东西
entries:
  - operationId: "getG"
    applicationName: "c"

  - operationId: "get"
    applicationName: "c"

然后像这样 class 将属性映射到 YamlEntries 列表中:

@Component
@ConfigurationProperties(prefix = "entries")
public class Endpoints {
  private List<YamlEntries> yamlEntries;
}