comment puis-je lire un fichier YAML?
J'ai un fichier YAML:
Company1:
name: Something1
established: 2000
#
Company2:
name: Something2
established: 1932
de la lecture du fichier YAML: (** mise à JOUR **)
config = YAML.load_file('file.yaml')
config.each do |key, value|
if(key == 'name')
company_name = value
#year = config['Company1']['established']
year = config.fetch(key)['established']
end
end
** Mise à JOUR **
Maintenant, le code ci-dessus fonctionne, mais il montre le résultat:
company1 => {"name" => "something1"} => {"established year" => 2000"}
comment puis-je supprimer le {} et "" ?
J'ai écrit une réponse détaillée, mais vu Mori réponse de la venir dans. La réponse est probablement tout ce que vous devez savoir. En raison de l'absence de retrait dans votre fichier YAML, vous étiez juste réaffectation des de la clé (qui doit être unique) dans le même Hash, et donc vous avez été voir ce comportement.
J'apprécie si vous pouviez m'aider avec un extrait de code, j'ai toujours le problème.
Avec ce que vous avez appris jusqu'à présent, les réponses données, vous pouvez afficher vos modifications et qui va nous aider à vous aider à voir où vous allez mal.
Juste mettre à jour mon post
Vous n'obtenez pas cette erreur avec ton code actuel dans votre question. Si votre déclaration n'est pas déclenché. Et maintenant, votre question est en train de migrer vers le "Comment puis-je utiliser un imbriquée de Hachage?" Pourrait envisager de faire cette demande en codereview.stackexchange.com.
J'apprécie si vous pouviez m'aider avec un extrait de code, j'ai toujours le problème.
Avec ce que vous avez appris jusqu'à présent, les réponses données, vous pouvez afficher vos modifications et qui va nous aider à vous aider à voir où vous allez mal.
Juste mettre à jour mon post
Vous n'obtenez pas cette erreur avec ton code actuel dans votre question. Si votre déclaration n'est pas déclenché. Et maintenant, votre question est en train de migrer vers le "Comment puis-je utiliser un imbriquée de Hachage?" Pourrait envisager de faire cette demande en codereview.stackexchange.com.
OriginalL'auteur newbi | 2012-11-09
Vous devez vous connecter pour publier un commentaire.
Ok, donc c'est de votre fichier YAML droit?
Bien maintenant ce fichier YAML représente en fait une table de Hachage. La has a deux touches que j'.e Entreprise1, Vie2 (parce qu'ils sont les principales entrées et sous-entrées (nom et établies) sont en retrait). La valeur de ces deux touches, c'est de nouveau une table de Hachage. Ce Hash dispose également de 2 clés à savoir le nom et l'établi. Et ils ont des valeurs comme Something1 et 2000, respectivement, etc.
Donc quand vous le faites,
Et imprimer config (qui est un Hachage représentant le fichier YAML contenu) à l'aide d',
vous obtenez l'affichage suivant:
Nous avons donc un objet de Hachage telle que décrite par le fichier YAML.
À l'aide de ce Hash est assez simple.
Étant donné que chaque entreprise du nom et de l'année à venir dans un hachage à la tenue par l'extérieur de hachage (entreprise1, vie2), nous pouvons itérer les entreprises. Le Code suivant imprime le Hachage.
Donc à Chaque itération nous avons accès à chacun (clé,valeur) de la table de Hachage. Cette première itération, nous avons
company
(clé)Company1
etdetails
(valeur){"name"=>"Something1", "established"=>2000}
Espère que cela a aidé.
OriginalL'auteur Steve Robinson
YAML utilise l'indentation pour la détermination de la portée, alors essayez, par exemple:
year = config.fetch('established')
?Je pense que vous devriez aller pour config['Entreprise1']['établi'] que Entreprise1 et Entreprise2 sont juste des clés dans une table de hachage.
mais cela se termine avec
undefined method
[]' for nil:NilClass (NoMethodError)`Dans la console, vous pouvez trouver le bon format en utilisant
to_yaml
, par exemple> {foo: :bar, baz: :qux}.to_yaml
.désolé ne pouvais pas le faire, au-dessus de me donner quelque chose comme ceci:
--- :foo: :bar :baz: :qux
. Désolé pour la question stupide, je suis nouveau dans ruby.OriginalL'auteur Mori