首页 > 解决方案 > yamlMapper.readValue 将值与下一个属性名称连接导致 InvaidFormatException

问题描述

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

我尝试\n在 60 之后添加一个以强制换行但没有成功。(在我更新文件之前它工作正常,将 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;

}

在此处输入图像描述

标签: javaspringspring-bootyaml

解决方案


后面的行60更缩进。这会导致 YAML 将其读取为标量的延续60,从而导致60 - code-被视为序列项指示符,它不能标量内)。仅当:遇到时,该值才最终确定,因为:可以结束标量。

您的类表明您要提供要加载到该字段中的序列cities;您需要为此提供citiesYAML 中的密钥:

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

推荐阅读