【发布时间】:2014-03-02 08:10:31
【问题描述】:
YAML 1.2 是 JSON 的超集(有一个 minor caveat 关于重复键),因此任何有效的 JSON 文件也是有效的 YAML 文件。但是,YAML 1.1 specification(其中library support 最多)没有提到 JSON。大多数有效的 JSON 文件都是有效的 YAML 1.1 文件,但我通过试验 PyYaml 和 Python 的标准 JSON 库发现了至少一个例外:
- 双精度浮点溢出(例如
12345e999)被 PyYAML 解释为字符串,被 Python 的 JSON 库解释为 IEEE infinity。
有没有人有一个完整的差异列表,比通过在特定实现中测试边缘案例更可靠地确定? (也就是说,从规范的比较?)例如,我想生成 JSON 字符串,这些字符串将被 JSON 解析器和 YAML 1.1 解析器以相同的方式解释:我必须对我的字符串设置什么约束?
【问题讨论】:
-
我说,“有没有人有一个清单...”。我不是要求人们做新的工作,我是问有没有其他人以前遇到过这个问题,以便我们可以分享结果。
-
我不认为
12345e999示例表明该文件不是有效的 JSON 或 YAML。 1) 两种实现都正确地解释了它(当然,这可能是错误的); 2) AFAIK 无论是 YAML 还是 JSON 规范都没有严格定义实现必须支持的浮点值范围,因此特定于实现的行为是公平的游戏。