Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Can';不要读yaml';使用@ConfigurationProperties创建复杂对象。整数不能转换为字符串_Spring_Spring Boot_Annotations_Yaml_Lombok - Fatal编程技术网

Spring Can';不要读yaml';使用@ConfigurationProperties创建复杂对象。整数不能转换为字符串

Spring Can';不要读yaml';使用@ConfigurationProperties创建复杂对象。整数不能转换为字符串,spring,spring-boot,annotations,yaml,lombok,Spring,Spring Boot,Annotations,Yaml,Lombok,我正在读这个yml文件 dist-price: 1234: foo: 4567 bar: false 并把它放在这门课上。(我正在使用Lombok和Spring Boot v1.5.4.RELEASE) 如果我将TreeMap更改为TreeMap,它可以正常工作。但是我真的需要使用整数。似乎TreeMap的键(在本例中:1234)正在转换为String。我不知道为什么 当TreeMap是TreeMap时,情况很好,yml就是这样 dist-price: 1234: 45

我正在读这个yml文件

dist-price:
  1234:
    foo: 4567
    bar: false
并把它放在这门课上。(我正在使用Lombok和Spring Boot v1.5.4.RELEASE)

如果我将
TreeMap
更改为
TreeMap
,它可以正常工作。但是我真的需要使用
整数
。似乎
TreeMap
的键(在本例中:
1234
)正在转换为
String
。我不知道为什么

TreeMap
TreeMap
时,情况很好,yml就是这样

dist-price:
  1234: 4567

编辑:我尝试了Spring Boot
v1.5.9。发行版
,但运气不佳。

这与
@ConfigurationProperties
无关,而是与YAML处理键的方式有关。默认情况下,YAML中的键是
String
,因此如果您真的想在那里使用integer,您必须以某种方式强制使用它

有几种记录在案的方法可以做到这一点,引用本应有效,但对我无效(“1234”给了我234!)。使用
强制整数!!int
有效

dist-price:
  !!int 1234:
    foo: 4567
    bar: false

这与
@ConfigurationProperties
无关,而是与YAML处理键的方式有关。默认情况下,YAML中的键是
String
,因此如果您真的想在那里使用integer,您必须以某种方式强制使用它

有几种记录在案的方法可以做到这一点,引用本应有效,但对我无效(“1234”给了我234!)。使用
强制整数!!int
有效

dist-price:
  !!int 1234:
    foo: 4567
    bar: false

我根据以下问题创建了一个示例项目:

并确认从此行引发异常:


如您所见,
key
被键入为
String
,这是异常的根本原因。我不确定这是否是合法用法,因为我从来没有考虑过它的
Integer
键。

我根据以下问题创建了一个示例项目:

并确认从此行引发异常:


如您所见,
key
被键入为
String
,这是异常的根本原因。我不确定这是不是合法的用法,因为我从来没有想过它的
Integer
键。

我认为这是一个bug。@Aristtl我也开始这么认为了。我现在正在使用一种变通方法。我使用的是Spring Boot v1.5.4。版本。@Stephane使用数字作为密钥是禁止的吗?另请看Johnny Lim的回答。我认为这是一个错误。@Aristtl我也开始这么认为了。我现在正在使用一种变通方法。我使用的是Spring Boot v1.5.4。版本。@Stephane使用数字作为密钥是禁止的吗?另请参见Johnny Lim的答案。如果我错了,请纠正我,但是,
映射节点的内容是一组无序的键:值节点对,每个键都是唯一的。YAML对节点没有进一步的限制。
因此整数作为键是合法的。我想这是一只虫子。感谢您的澄清。@user2652379“legit”是指配置属性,而不是YAML。我认为Stephane可以为您提供是否合法的答案。如果我错了,请纠正我,但是,
映射节点的内容是一组无序的键:值节点对,每个键都是唯一的。YAML对节点没有进一步的限制。
因此整数作为键是合法的。我想这是一只虫子。感谢您的澄清。@user2652379“legit”是指配置属性,而不是YAML。我想Stephane可以给你答案,看看它是否合法。
dist-price:
  !!int 1234:
    foo: 4567
    bar: false