提问人:Eljah 提问时间:10/5/2023 更新时间:10/5/2023 访问量:61
我从Spring Boot应用程序中的application.yaml文件中得到了完全错误的字符串值。yaml config 中的值为 044525266,var 中的值为 9611958
I'm getting totally wrong String value from the application.yaml file in the Spring Boot app.The value in yaml config is 044525266 and in var 9611958
问:
这可能是因为领先零?
acquiring:
bic: 044525266
在 yaml 中通过
@Autowired
public AcquiringService(
...
@Value("${acquiring.bic}") String bic,
...
)
Spring Boot 版本为:2.1.8.RELEASE
它使用库org.yaml:snakeyaml:1.23
答:
-1赞
Eljah
10/5/2023
#1
acquiring:
bic: "044525266"
引号成功了。而且我不知道为什么,为什么不能作为一个?String
String
评论
1赞
Jorn
10/5/2023
String 被读取为 String 就好了。但是,如果在 YAML 中放置八进制文字,则该文字将首先被读取为数字,然后转换为字符串(十进制)。
0赞
Eljah
10/5/2023
正常人怎么会知道这一点,而不是面对相关的失败?
0赞
Eljah
10/5/2023
@Jorn我希望你把你的评论变成官方答案,这真的是有道理的。
4赞
peterulb
10/5/2023
#2
正如你所指出的,引号可以解决这个问题。原因可以在 YAML 1.1 规范中找到。
例 2.19.整数
规范:12345
十进制:+12,345
六进制:3:25:45
八进制:014 <<<<<<<
十六进制:0xC
在 YAML 1.2 中,八进制数代替 .0o
0
所以八进制变成十进制。044525266
9611958
为了正确使用,应该使用引号
acquiring:
bic: "044525266"
评论