web-dev-qa-db-ja.com

YAMLでインジケーター文字(すなわち:または - )をエスケープする方法

設定ファイルに、URLを割り当てたいキーがあります。問題は、YAMLが:と - の文字をマッピングまたはリストの作成として解釈することです。そのため、この行には問題があります。

url: http://www.example-site.com/

(どちらもhttpに続くコロンと真ん中のハイフンのため)

':'と ' - 'をエスケープするための明示的な方法はありますか?それとも、全体を一重引用符で囲み、1日にするだけでうまくいくのでしょうか。

191
danieltahara

引用:

"url: http://www.example-site.com/"

明確にするために、私は「値を引用する」ことを意味し、もともと全部が値であると考えました。 http://www.example-site.com/が値の場合は、そのように引用するだけです。

url: "http://www.example-site.com/"
178
Ry-

長い複数行のテキストでも機能し、さらに優れているのは、テキストをパイプまたは大なり記号の後の次の行にインデントすることです。

text: >
    Op dit plein stond het hoofdkantoor van de NIROM: Nederlands Indische 
    Radio Omroep

パイプは改行を保存し、gt記号はそれに続くすべての行を1つの長い文字列に変換します。

153
Micros

YAMLの仕様によると、:-も問題にならないはずです。 :は、その後にスペースがあるキー区切り文字であり、-は、その後にスペースがある行の先頭にある配列標識だけです。

あなたのYAML実装に問題があるなら、あなたは潜在的にたくさんの選択肢があります:

- url: 'http://www.example-site.com/'
- url: "http://www.example-site.com/"
- url:
    http://www.example-site.com/
- url: >-
    http://www.example-site.com/
- url: |-
    http://www.example-site.com/

ただし、 " プレーンスタイル "には、明示的にエスケープすることはできません。

33
Steve Bennett

引用ですが、私は値だけでそれらを好む:

url: "http://www.example.com/"

行全体に配置すると、問題が発生する可能性があります。

30
Gringo Suave

Jekyllで使われているYAMLパーサと連携するもう一つの方法:

title: My Life: A Memoir

一方、コロンの後にスペースが続かない場合は、JekyllのYAMLパーサを気にする必要はありません。ダッシュもしません。

18
ptomato

コロンを含むキーを使用してマップを挿入するためにSpring Boot 2で@ConfigurationPropertiesを使用している場合は、springでは英数字と ' - '文字のみが許可され、残りは削除されるため、角括弧を使用したエスケープが必要です。新しいキーは次のようになります。

"[8.11.32.120:8000]": GoogleMapsKeyforThisDomain

参考のために this github issueを見てください。

2
Andy Brown

Azure DevOps Command Lineタスクを機能させるためにここに来ました。私のために働いたのは、パイプ(|)文字を使用することでした。 >を使用しても機能しませんでした。

例:

steps:
- task: CmdLine@2
  inputs:
    script: |
      echo "Selecting Mono version..."
      /bin/bash -c "Sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_18_1"
      echo "Selecting Xcode version..."
      /bin/bash -c "echo '##vso[task.setvariable variable=MD_Apple_SDK_ROOT;]'/Applications/Xcode_10.2.1.app;Sudo xcode-select --switch /Applications/Xcode_10.2.1.app/Contents/Developer"