FastAdmin php 解析 yaml 1.2 的问题
FastAdmin php 解析 yaml 1.2 的问题
问题
在 QQ 群里一位小伙伴提问 yaml 解析错误,y
变成了 1
。
size:
x: 100
y: 200
被解析成
size:
x: 100
1: 200
分析过程
初步查看是 y 键也被解析器自动替换成了布尔值。
到 yaml 的官网查看,的确也没有问题,因为规范也是这么写的。
y|Y|yes|Yes|YES|n|N|no|No|NO
|true|True|TRUE|false|False|FALSE
|on|On|ON|off|Off|OFF
起初也没觉得是问题,最多觉得这个也太宽泛了。
然后发现在 github 中有人也提出这个问题[1],说 yaml 1.2 有更加规范了一点。
Since 1.0.0 we have removed support of automagic y => true conversion in the spirit of YAML 1.2 after some talks with YAML core developers.
查看了 yaml 最新规范,的确和 1.1 有差别[2],从这个差别中可以看出,针对 boolean 范围作了限制,只可以为 true, True, TRUE
。
继续查找资料,发现 php PECL 扩展库的 yaml 只支持 yaml 1.1 的解析,这里有一个坑,以为这个 php-yaml[3] 的版本是 yaml 版,其实这里的版本是 php-yaml 的解析软件版本,php-yaml 只针对 yaml1.1 的解析。
那如果需要让 php 解析 yaml 1.2 怎么办呢?
我们继续查找,再次找到一个 symfony/yaml
php composer 组件,找到官方的说明[4],验证了 这个 php composer 组件支持的是 yaml 1.2,不会把小伙伴的 y 替换成为 1。
Booleans
Booleans in YAML are expressed with true and false.
最后小伙伴引入了 symfony/yaml
解决了这个 yaml 解析问题。
原文地址: https://www.cnblogs.com/F4NNIU/p/17190099.html (禁止转载)
所有文章为原创,如非授权,请勿转载。
我们要多多支持有创造能力的人,因为那是我们所有人的希望。
同时我们也希望成为有创造能力的人,我们支持开源,同时也支持正版。
🎈数码荔技正版软件商店🎈
【正版】微软 Office 365
【正版】老牌文件对比工具 Beyond Compare
【正版】JetBrains Idea Java IDE
不断学习,慢慢进步,做时间的朋友。
注意力 > 时间 > 金钱。 -- 建伟 F4nniu
我们要多多支持有创造能力的人,因为那是我们所有人的希望。
同时我们也希望成为有创造能力的人,我们支持开源,同时也支持正版。
🎈数码荔技正版软件商店🎈
【正版】微软 Office 365
【正版】老牌文件对比工具 Beyond Compare
【正版】JetBrains Idea Java IDE
不断学习,慢慢进步,做时间的朋友。
注意力 > 时间 > 金钱。 -- 建伟 F4nniu