web-dev-qa-db-ja.com

YAMLで辞書項目の配列を構築していますか?

基本的に、このjsonを使用して行うことができるyamlの何かを試みます:

{
models:
 [
  { 
    model: "a"
    type: "x"
    #bunch of properties...
  },
  {
    model: "b"
    type: "y"
    #bunch of properties...
  }
 ]
}

これまでのところこれは私が持っているもので、modelキーを繰り返しているので機能しませんが、modelキーワードを保持することでそれを行う適切な方法は何ですか?

models:
 model:
  type: "x"
  #bunch of properties...
 model:
  type: "y"
  #bunch of properties...
32
sadaf2605

ダッシュを使用して、新しいリスト要素を開始します。

models:
 - model: "a"
   type: "x"
   #bunch of properties...
 - model: "b"
   type: "y"
   #bunch of properties...
78
Charles Duffy

あなたはおそらくあなたの投稿でJSONと呼ぶものがそうではなく、YAMLとJSONの半分以上であるため、YAMLをあまりにも長い間見てきました。 JSONが#で始まるコメントを許可しないという事実をスキップして、キーである文字列を引用し、マッピングの要素間に,を挿入する必要があります。

{
"models":
 [
  {
    "model": "a",
    "type": "x"
  },
  {
    "model": "b",
    "type": "y"
  }
 ]
}

ThatはYAMLと同様に正しいJSONです。YAMLはJSONのスーパーセットであるためです。できますこれをオンラインで確認してください YAMLパーサー

ruamel.yaml.cmd (PyYAMLの拡張バージョン:pip install ruamel.yaml.cmdに基づいて)を使用して、YAMLとして好むと思われるブロックスタイルに変換できます。コマンドラインユーティリティを使用してJSONを変換し、YAMLをブロックできます(バージョン0.9.1では、フロースタイルを強制することもできます)。

yaml json in.json

あなたを取得します:

models:
- model: a
  type: x
- model: b
  type: y

上記のことを可能にするオンラインリソースがいくつかありますが、そのようなサービスと同様に、重要なもの(クレジットカード番号やパスワードのリストなど)にはそれらを使用しないでください。

33
Anthon