能否在Dhall记录标签中使用非ASCII字符(如CJK字符)?
Dhall记录标签能否使用非ASCII字符(如CJK字符)?
问题背景
想要将以下JSON转换为Dhall记录:
{ "ハルカナホシノセカイへ": "https://www.youtube.com/watch?v=pwl1nISaCNg" }
使用json-to-dhall工具转换后得到结果:
$ json-to-dhall <<< '{ "ハルカナホシノセカイへ": "https://www.youtube.com/watch?v=pwl1nISaCNg" }' { `ハルカナホシノセカイへ` = "https://www.youtube.com/watch?v=pwl1nISaCNg" }
但用dhall-to-json将该Dhall代码转回JSON时,出现了语法错误:
$ dhall-to-json <<< '{ `ハルカナホシノセカイへ` = "https://www.youtube.com/watch?v=pwl1nISaCNg" }' Error: Invalid input (input):1:3: | 1 | { `ハルカナホシノセカイへ` = "https://www.youtube.com/watch?v=pwl1nISaCNg" } | ^ unexpected '`' expecting ',', =, whitespace, or }
解答
Dhall完全支持在记录标签中使用非ASCII字符(包括CJK字符),问题出在反引号的使用上:
- 反引号包裹标签是Dhall早期版本的语法,现在已被废弃,当前标准语法允许直接将非ASCII字符作为记录标签,不需要额外包裹。
- 正确的Dhall记录写法如下:
{ ハルカナホシノセカイへ = "https://www.youtube.com/watch?v=pwl1nISaCNg" }
- 使用上述正确代码运行
dhall-to-json,即可成功转换回原JSON格式。
内容的提问来源于stack exchange,提问作者Futarimiti
相关产品推荐
相关产品推荐

