gpt4 book ai didi

json - 使用 YAML 解析器处理 JSON;抛出制表符空白

转载 作者:行者123 更新时间:2023-12-01 23:41:01 26 4
gpt4 key购买 nike

我有点不确定该 Handlebars 指指向哪里(当然除了我自己)

  1. JSON 是 YAML 1.2 的子集 http://www.yaml.org/spec/1.2/spec.html“每个 JSON 文件也是一个有效的 YAML 文件”

  2. JSON 可以将制表符作为“无关紧要的空白”——包括制表符 http://www.ietf.org/rfc/rfc4627.txt“允许使用无关紧要的空格……”

  3. YAML 不允许制表符缩进 http://www.yaml.org/spec/1.2/spec.html"制表符不得用于缩进"

所以使用我的 YAML 解析器来处理下面的 JSON

{
\t"result" : "success",
}

注意:\t 只是为了可视化,输入包含一个真正的制表符。

遇到错误“不允许使用制表符缩进”<- 这似乎是正确的。

但是“每个 JSON 文件也是一个有效的 YAML 文件”规则如何成立?因为我的文件是有效的 JSON?

由于制表符没有意义,我是否应该运行一个预处理步骤来去除所有制表符?由于字符串中唯一允许的空格是“空格”——删除文件中的所有制表符应该是安全的。

最佳答案

Hits an error 'not allowed to use tab for indenting' <- which seems correct.

不是。

这是 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-keyflow-key 中)。跳过一些步骤,我们到达 s-separate-in-line允许使用制表符。

底线是您的 JSON 中的制表符不是缩进。缩进仅与 block 样式相关(即不分别对序列和映射使用 [{ )。在 Flow 样式中,空格仅用于分隔。

编辑:删除了示例链接,因为它有些误导。

编辑 2:回答您的第二个问题:不,不要剥离制表符。它们可能包含在标量中!参见 this example其中表格实际上确定了 block 标量的缩进。

关于json - 使用 YAML 解析器处理 JSON;抛出制表符空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40072485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com