Z
ZHANK
标准库与工具

JSON 与 YAML

JSON.parse/generate、YAML 序列化配置、symbolize_names

JSON 与 YAML

Ruby 内置 JSON 和 YAML 支持——配置文件用 YAML(人类可读),数据传输用 JSON。

学完本章你将: 掌握 JSON.parse/generate、YAML 序列化。


JSON

ruby
require "json"

data = { name: "小明", age: 25, hobbies: ["编程", "跑步"] }

# 序列化
json = JSON.generate(data)
json = data.to_json            # 等价
puts json
# {"name":"小明","age":25,"hobbies":["编程","跑步"]}

# 反序列化
parsed = JSON.parse(json)
puts parsed["name"]  # "小明"

# 格式化
puts JSON.pretty_generate(data)

# symbolize_names(Hash 键转 Symbol)
parsed = JSON.parse(json, symbolize_names: true)
puts parsed[:name]  # "小明"

YAML

ruby
require "yaml"

config = {
    database: {
        host: "localhost",
        port: 5432,
    },
    redis: { url: "redis://localhost:6379" },
}

# 序列化
yaml = config.to_yaml
puts yaml
# ---
# :database:
#   :host: localhost
#   :port: 5432
# :redis:
#   :url: redis://localhost:6379

# 反序列化
loaded = YAML.load_file("config.yml")

💡 Rails 配置文件(database.yml、secrets.yml)就是 YAML 格式。