web-dev-qa-db-fra.com

Tableaux multilignes YAML

Dans YAML , vous pouvez facilement créer chaînes multilignes . Cependant, j'aimerais pouvoir créer un tableau multiligne (principalement pour la lisibilité dans les fichiers de configuration) à l'aide du caractère |.

Un tableau YAML peut être représenté par: ['key1', 'key2', 'key3'].

Une séquence YAML utilise un tiret suivi d'un espace puis d'une chaîne:

- String1
- String2
- String3

Cela serait évalué à: ['string1', 'string2', 'string3'].

Un mappage YAML est un tableau de paires clé/valeur que nous voyons tout le temps en YAML:

Key1: string1
Key2: string2
Key3: string3

Tout cela est bien beau, mais je ne vois pas comment faire un tableau multiligne. Quelque chose comme ça:

|
['string1', 'string2', 'string3']
['string4', 'string5', 'string6']

À part la création de plusieurs mappages de tableaux dans YAML et leur fusion dans le langage de programmation de mon choix, existe-t-il un moyen de créer des tableaux à plusieurs lignes, peut-être avec { } comme Python mais en YAML?

98
Jimbo

Un YAML sequence est un tablea. C'est donc la bonne façon de l'exprimer:

key:
  - string1
  - string2      
  - string3
  - string4
  - string5
  - string6

C'est identique dans le sens de:

key: ['string1', 'string2', 'string3', 'string4', 'string5', 'string6']

Il est également légal de diviser un tableau d'une seule ligne en plusieurs lignes:

key: ['string1', 'string2', 'string3', 
  'string4', 'string5', 
  'string6']

et même avoir des chaînes multilignes dans des tableaux à une seule ligne:

key: ['string1', 'long
  string', 'string3', 'string4', 'string5', 'string6']
164
Steve Bennett

avez-vous essayé cela?

-
  name: Jack
  age: 32
-
  name: Claudia
  age: 25

Je reçois ceci: [{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}] (j'utilise la classe YAML Ruby.).

14
Iwan B.

Ce qui suit fonctionnerait:

myarray: [
  String1, String2, String3,
  String4, String5, String5, String7
]

Je l'ai testé en utilisant l'implémentation de snakeyaml. Je ne suis toutefois pas sûr des autres implémentations.

5
Yee

Suivre Works pour moi est bon du point de vue de la lisibilité lorsque les valeurs des éléments du tableau sont faibles:

key: [string1, string2, string3, string4, string5, string6]

Note: implémentation de snakeyaml utilisée