Yaml的一个坑

今天在配置yaml的时候老师提示错误,如下:

1
yaml: line 4: mapping values are not allowed in this context

我的yaml内容如下:

1
2
3
4
5
6
---
server: 127.0.0.1:8888
formatconf:
logdir: /data
format: '(?P<remote>[^ ]*) [^ ]* \[(?P<at>[^\]]*)\] "(?P<method>\S+)(?: +(?P<path>[^\"]*) +\S*)?" "(?P<servers>[^\"]*)" (?P<status>[^ ]*) (?P<size>[^ ]*)(?: (?P<body>[^ ]*)) "(?P<referer>[^ ]*)" "(?P<agent>.*)" (?P<proxy>[^ ]*) (?P<request_time>[0-9\.]+)'
timeformat: 02/Jan/2006:15:04:05 -0700

排查了空格和tab的问题,拷贝到yaml的测试网站也是可以通过的,但是程序读取始终就报这个错误,而且把提示的行删掉也无济于事,我用的是golang,引用的包是gopkg.io/yaml.v2,后来无意中把提示行下面的一行内容删掉了就好了,我这才想起来可能是正则表达式里面的引号或者其他符号把yaml的定义隔断了,真的是SB了,赶紧加上单引号,解析通过。

特此记录,供遇到相同问题的同仁参考。

坚持原创技术分享,您的支持将鼓励我继续创作!