ala*_*bda 5 java yaml spring-boot
在我的application.yml文件中有声明:
service:
  a: 
    b: 011600
    c: 011200
.yml通过@Value注释选择值:
@Value("${service.a.c}")
private String VALUE;
我得到的不是预期的 '011200',而是 .yml 中没有提到的 '4992'。
您没有指定文档的 YAML 版本,而且您的解析器似乎默认为 1.1 版(或 1.1 版兼容性)。这导致以 0 开头的值后跟数字被解释为八进制,011200(八进制)的值为4736(十进制),011600(八进制)的值为4992。
在 YAML 1.2 中,八进制整数值应以 开头,Oo因此011200将是整数11200 
尝试使用:
%YAML 1.2
---
service:
  a:
    b: 011600
    c: 011200
如果这不能为您提供所需的价值,您应该考虑使用兼容的 YAML 解析器(YAML 1.2 规范是从 2009 年开始的,因此有足够的时间来解决问题)。
您当然可以引用您的整数标量,但它们将作为字符串加载,而不是作为整数加载。在这种情况下,您不需要指定版本标签,版本 1.2 和 1.1 都以相同的方式解释:
service:
  a:
    b: '011600'
    c: '011200'
如果在获取您在文件中指定的十进制值后,您仍然得到错误的值,@Value("${service.a.c}")那么您应该考虑使用不同的访问方法(如果键中有一个点(例如serv.ice:)解析器。
| 归档时间: | 
 | 
| 查看次数: | 3388 次 | 
| 最近记录: |