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
我有将 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