如何在yaml中制作关联数组列表
Posted
技术标签:
【中文标题】如何在yaml中制作关联数组列表【英文标题】:How to make a list of associative array in yaml 【发布时间】:2013-06-14 23:05:14 【问题描述】:我正在尝试将一些配置变量存储在 yaml 中,表示为关联数组,即字典。 我是这样做的:
content_prices:
- country: AU, price: 6990000
- country: AT, price: 4990000
- country: BE, price: 4990000
当我尝试从我的 ROR 初始化文件中解析它时,这会产生一个异常:
未定义的方法`symbolize_keys!'对于 nil:NilClass
这是我的初始化方式:
Config = YAML.load_file("#Rails.root/config/prices.yml")[Rails.env].symbolize_keys!
我猜我的 yaml 语法是错误的,那么如何正确写呢?
【问题讨论】:
我在你的 YAML 中没有看到 rails envs 部分 【参考方案1】:万一有人想使用动态键,也是可以的:
AppBundle\Service\MailerService:
lazy: false
arguments:
$defaultFrom:
'%mailer_user%': '%mailer_name%'
【讨论】:
【参考方案2】:不是在 Rails 上,而是在 Symfony2 php 上,我必须像这样配置 yml 文件:
内容价格: - 国家:澳大利亚 价格:6990000 - 国家: AT 价格:4990000 - 国家:比利时 价格:4990000【讨论】:
这是 symfony 解析器的问题,它不遵守列表规范,除非破折号后有换行符 @dreftymac 这个问题现在解决了吗?您能否提供错误报告的链接? @marcv 如果我没记错的话它是固定的【参考方案3】:你的 YAML 看起来不错,或者你可以像这样配置一个哈希数组:
content_prices:
- country: AU
price: 6990000
- country: AT
price: 4990000
- country: BE
price: 4990000
将加载为以下哈希:
"content_prices"=>[
"country"=>"AU", "price"=>6990000,
"country"=>"AT", "price"=>4990000,
"country"=>"BE", "price"=>4990000]
但这仍然没有为您提供对主哈希中Rails.env
的任何引用。问题似乎是您期望的哈希值而不是 YAML 的格式。
【讨论】:
我猜,这是内联方法key: - string1
,key: ['string1', 'string2',
,这是当代不接受上述语法的关联对象表示法,- param1: 'myvalue', param2: 'myvalue2'
***.com/a/33136212/3419535,***.com/a/49814618/3419535跨度>
以上是关于如何在yaml中制作关联数组列表的主要内容,如果未能解决你的问题,请参考以下文章