代码之家  ›  专栏  ›  技术社区  ›  Yuval Karmi

在yaml中存储信息

  •  0
  • Yuval Karmi  · 技术社区  · 15 年前

    我看了看 YAML for ruby documentation 找不到答案。

    我有几个雇员的名单。每个都有一个名字、电话和电子邮件,如:

    Employees:
        Name | Phone | Email
        john   111     a@b.com
        joe    123     b@a.org
        joan   321     c@a.net
    

    我如何用yaml编写上述信息,以得到下面的Ruby输出?

    employees = [ {:name => 'john', :phone => '111', :email => 'a@b.com'}, {:name => 'joe', :phone => '123', :email => 'b@a.org'}, {:name => 'joan', :phone => '321', :email => 'c@a.net'} ]
    

    这就是我如何解析yaml文件:

    APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")
    

    谢谢您!

    2 回复  |  直到 15 年前
        1
  •  2
  •   Matchu    15 年前
    - name: john
      phone: 111
      email: a@b.com
    - name: joe
      phone: 123
      email: b@a.org
    - name: joan
      phone: 321
      email: c@a.net
    

    输出是字符串键,而不是符号键,但如果确实需要,您可以自己进行转换。

        2
  •  2
  •   Larry K    15 年前

    请注意,Ruby1.8.6附带的标准yaml是 不是 UTF/Unicode安全。

    如果要进行任何非ASCII测试,请使用Ruby1.9yaml或ya2yaml gem。

    此外,查看yaml输入应该是什么的最简单方法是(在RubyIRB中)创建数据结构的一个示例。然后使用.to ou yaml对象类方法将其转换为yaml文本。 如

    require 'yaml'
    # create your structure
    a = [{'name' => "Larry K", 'age' => 24,
         'job' => {'fulltime' => true, 'name' => 'engineer'}}]
    a.to_yaml
    
    => "--- \n- name: Larry K\n  job: \n    name: engineer\n    fulltime: true\n  age: 24\n"
    
    # then substitute line breaks for the \n:
    --- 
    - name: Larry K
      job: 
        name: engineer
        fulltime: true
      age: 24