"这里不允许映射密钥"当我使用'?' yaml文件中的字符。我怎么能让程序可以使用'?'字符?

时间:2015-08-17 14:24:02

标签: java yaml

folder:
  name: folderA
  files:
  - name: fileA
  folders:
  - name: ?
    files:
    - name: fileB

我在Java中使用了yaml,我在Eclipse中遇到- name: fileA的错误。是否存在一种方式,我可以使用'?'在yaml文件中?

1 个答案:

答案 0 :(得分:0)

YAML映射的键值对中的键在“未删节”YAML中由问号引入。这允许在没有前瞻的情况下进行解析(对于密钥后面的:)并且有时需要复杂的密钥(即不仅仅是单个字符串标量),或者如果你想要一个长度超过1024个字符的密钥,那么是:的{​​{3}}。

您的解析器会看到“?”,需要一个密钥,但会遇到需要密钥的换行符。

没有解析器解析特殊字符(除了?&*和其他一些)的正常解决方案是用单引号或双引号引用它们:

folder:
  name: folderA
  files:
  - name: fileA
  folders:
  - name: '?'
    files:
    - name: fileB

你可以像你一样幸运地编写文件。如果您将问号放在自己的行上:

folders:
- name:
    ?
  files:
  - name: fileB

然后键name的值将是从null到null的映射,就像你写的那样:

folders:
- name:
    null: null
  files:
  - name: fileB

你可能没有那么容易注意到你所得到的错误,那不是你想要的。