我有点不确定手指的确切位置(当然不是我自己)
http://www.yaml.org/spec/1.2/spec.html
“每个JSON文件也是有效的YAML文件”
http://www.ietf.org/rfc/rfc4627.txt
“允许使用无关紧要的空格...”
http://www.yaml.org/spec/1.2/spec.html
“不得在缩进中使用制表符”
因此,使用我的YAML解析器来处理以下JSON
{
\t"result" : "success",
}
注意:\ t仅用于可视化,输入中包含真实的制表符。
出现错误“不允许使用制表符缩进”
但是,“每个JSON文件也是有效的YAML文件”规则如何成立;因为我的文件是有效的JSON?
由于制表符是没有意义的,我应该只执行预处理步骤以剥离所有制表符吗?由于字符串中唯一允许使用的空格是'space'-因此,只需删除文件中的所有制表符就可以了。
最佳答案
出现错误“不允许使用制表符缩进”
它不是。
这是Spec中的relevant production:
[140] c-flow-mapping(n,c) ::= “{” s-separate(n,c)?
ns-s-flow-map-entries(n,in-flow(c))? “}”
s-separate(n,c)
解析为s-separate-lines(n)
here(因为我们不在block-key
或flow-key
之内)。跳过一些步骤,我们到达s-separate-in-line,它允许使用制表符。底线是JSON中的此制表符不是缩进。缩进仅与块样式相关(即不分别对序列和映射使用
[
或{
)。在Flow样式中,空格仅用于分隔。编辑:删除示例链接,因为它有些误导。
编辑2:要回答第二个问题:不,请不要删除制表符。它们可能满足标量的要求!请参见this example,其中表格实际上确定了块标量的缩进。
关于json - 使用YAML分析器处理JSON;抛出制表符空白,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40072485/