如何在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: - string1key: ['string1', 'string2',,这是当代不接受上述语法的关联对象表示法,- param1: 'myvalue', param2: 'myvalue2' ***.com/a/33136212/3419535,***.com/a/49814618/3419535跨度>

以上是关于如何在yaml中制作关联数组列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jQuery在关联数组中获取表单的输入值

PHP - 作为对象的关联数组[重复]

PhpStorm制作实时模板:逗号分隔字符串到关联数组

如何在 Bash 中间接获取关联数组的键和值?

如何将对象(或关联数组)作为属性值传递给我的 Web 组件

如何在 Bash 中迭代关联数组