yamlMapper.readValue 将值与导致 InvaidFormatException 的下一个属性名称连接起来

yamlMapper.readValue concatenate value with next attribute name causing InvaidFormatException

我有将 yaml 配置文件映射到 class 的方法,但映射显然不正确,如下图所示,而不是将 60 映射到 default 属性它连接下一个导致异常的属性名称,因为 default 是一个 int,检索到的值是一个 string。 有人知道为什么会这样吗?

我尝试在 60 之后添加一个 \n 以强制换行,但没有成功。 (它工作正常,直到我更新文件,将 defaultLangId 中的 30 更改为 60)。

Yaml文件内容:

defaultLangId : 60
  - code: AR
    label: ar
last-result-index : 120

我的配置类:

@Getter
@Setter
public class XXXXXConfiguration {
    private int defaultLangId;
    private List<CodeLabel> cities;
    private int lastResultIndex;

}

60 之后的行更加缩进。这会导致 YAML 将其读取为标量 60 的延续,从而导致 60 - code(要将 - 视为序列项指示符,它不得在 内部 一个标量)。只有遇到:时才最终确定值,因为:可以结束一个标量。

您的class表示您要给出一个序列,该序列将被加载到字段cities;为此,您需要在 YAML 中提供密钥 cities

defaultLangId : 60
cities:
  - code: AR
    label: ar
last-result-index : 120