很多人认为yaml1.2是json的超集。但似乎有一些证据表明它不是。然而,我在寻找这些例子时遇到了麻烦。(我想在Python中使用json.loads()和yaml.safe_loads,我希望看到jsonloads运行良好,但yamlloafs抛出错误)。会有例子吗?我知道在yaml1中1e2将被认为是str,而在json中是number。所以我也想在yaml1.2中找到异常。
kg7wmglp1#
在JSON中,如果你想转义一个不在基本多语言平面中的Unicode字符,你需要编码一个UTF-16代理对(see this question)。YAML规范并不明确允许这样做,相反,它允许32位转义序列(以\U开始)。
\U
{ "x": "\uD834\uDD1E" }
字符串使用符合JSON的实现加载的方式与使用YAML实现加载的方式不同。YAML实现可能会从其中的代理块中生成一个包含两个Unicode字符的字符串-这是允许的,也是法律的,因为根据Unicode规范,这些是未分配的代码点。某些实现,特别是以Windows为中心的实现,可能会产生错误,因为Windows API内部使用UTF-16,因此无法表示代理块中的代码点。有效的YAML计算为相同的字符串将是
{ "x": "\U0001d11e" }
型
1条答案
按热度按时间kg7wmglp1#
在JSON中,如果你想转义一个不在基本多语言平面中的Unicode字符,你需要编码一个UTF-16代理对(see this question)。
YAML规范并不明确允许这样做,相反,它允许32位转义序列(以
\U
开始)。字符串
使用符合JSON的实现加载的方式与使用YAML实现加载的方式不同。YAML实现可能会从其中的代理块中生成一个包含两个Unicode字符的字符串-这是允许的,也是法律的,因为根据Unicode规范,这些是未分配的代码点。某些实现,特别是以Windows为中心的实现,可能会产生错误,因为Windows API内部使用UTF-16,因此无法表示代理块中的代码点。
有效的YAML计算为相同的字符串将是
型