web-dev-qa-db-fra.com

Vous créez un tableau d'éléments de dictionnaire en YAML?

Essentiellement, essayer quelque chose dans yaml qui pourrait être fait en utilisant ce json:

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

Jusqu'à présent, c'est ce que j'ai, cela ne fonctionne pas parce que je répète ma clé model mais quelle peut être une bonne façon de le faire en gardant ce mot clé model?

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

Utilisez un tiret pour démarrer un nouvel élément de liste:

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

Vous regardez probablement YAML depuis trop longtemps parce que ce que vous appelez JSON dans votre message ne l'est pas, il s'agit plutôt de la moitié et de la moitié de YAML et JSON. Permet d'ignorer le fait que JSON n'autorise pas les commentaires commençant par un #, vous devez citer les chaînes qui sont des clés et vous devez mettre , entre les éléments du mappage:

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

Que est JSON correct ainsi que YAML, car YAML est un sur-ensemble de JSON. Vous pouvez par exemple vérifiez cela en ligne à ce analyseur YAML .

Vous pouvez le convertir dans le style de bloc que vous semblez préférer en tant que YAML en utilisant ruamel.yaml.cmd (basé sur ma version améliorée de PyYAML: pip install ruamel.yaml.cmd). Vous pouvez utiliser son utilitaire de ligne de commande pour convertir JSON pour bloquer YAML (dans la version 0.9.1, vous pouvez également forcer le style de flux):

yaml json in.json

ce qui vous donne:

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

Il existe des ressources en ligne qui vous permettent de faire ce qui précède, mais comme avec n'importe lequel de ces services, ne les utilisez pas pour quelque chose d'important (comme la liste des numéros de carte de crédit et des mots de passe).

33
Anthon