Tableaux multilignes YAML

dans YAML , vous pouvez facilement créer multi-line strings . Cependant, je voudrais la possibilité de créer un tableau multi-lignes (principalement pour la lisibilité dans les fichiers de configuration) en utilisant le caractère | .

a YAML array peut être représenté comme: ['key1', 'key2', 'key3'] .

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

- String1
- String2
- String3

cela correspondrait à: ['string1', 'string2', 'string3'] .

YAML cartographie 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 peux pas pour la vie de moi voir comment faire un tableau multi-ligne. Quelque chose comme ceci:

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

à moins de créer des mappages de réseaux multiples dans YAML et de les fusionner dans mon avec le langage de programmation de choix, y a-t-il un moyen de réaliser des tableaux multilignes, peut-être avec { } comme Python mais en YAML?

54
demandé sur Community 2014-05-14 18:09:29

3 réponses

YAML séquence est un array . C'est donc la bonne façon de l'exprimer:

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

c'est identique au sens de:

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

il est également légal de diviser un tableau en une seule ligne sur plusieurs lignes:

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

et ont même des chaînes multi-lignes dans des tableaux à une seule ligne:

key: ['string1', 'long
  string', 'string3', 'string4', 'string5', 'string6']
89
répondu Steve Bennett 2015-10-14 21:51:57

La suivante devrait fonctionner:

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

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

4
répondu Yee 2014-08-27 17:51:03

avez-vous essayé?

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

, j'obtiens ceci: [{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}] (j'utilise le YAML classe Ruby).

-2
répondu Iwan B. 2018-09-20 10:25:41