FastAdmin php 解析 yaml 1.2 的问题

FastAdmin php 解析 yaml 1.2 的问题

image

问题

在 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 中有人也提出这个问题,说 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 有差别,从这个差别中可以看出,针对 boolean 范围作了限制,只可以为 true, True, TRUE

继续查找资料,发现 php PECL 扩展库的 yaml 只支持 yaml 1.1 的解析,这里有一个坑,以为这个 php-yaml 的版本是 yaml 版,其实这里的版本是 php-yaml 的解析软件版本,php-yaml 只针对 yaml1.1 的解析。

那如果需要让 php 解析 yaml 1.2 怎么办呢?

我们继续查找,再次找到一个 symfony/yaml php composer 组件,找到官方的说明,验证了 这个 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 (禁止转载)


  1. Key 'y' becomes 'true' https://github.com/nodeca/js-yaml/issues/42 ↩︎

  2. https://perlpunk.github.io/slides.tpcig2018/yamlpp/slide024.html ↩︎

  3. https://pecl.php.net/package/yaml ↩︎

  4. https://symfony.com/doc/current/reference/formats/yaml.html ↩︎

posted on   建伟F4nniu  阅读(71)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2019-03-07 RequireJS 学习资料收集
2018-03-07 jQuqery append 和 after 区别

导航

点击右上角即可分享
微信分享提示