"sup bra", -6ren">
gpt4 book ai didi

ruby-on-rails - Ruby JSON 解析更改哈希键

转载 作者:IT老高 更新时间:2023-10-28 12:44:01 25 4
gpt4 key购买 nike

假设我有这个哈希:

{
:info => [
{
:from => "Ryan Bates",
:message => "sup bra",
:time => "04:35 AM"
}
]
}

我可以通过 hash[:info] 调用 info 数组。

现在当我把它转换成 JSON (JSON.generate),然后解析它 (JSON.parse),我得到了这个哈希:

{
"info" => [
{
"from" => "Ryan Bates",
"message" => "sup bra",
"time" => "04:35 AM"
}
]
}

现在如果我使用 hash[:info] 它会返回 nil,但如果我使用 hash["info"] 则不会。

这是为什么?有没有办法解决这个不兼容问题(除了从一开始就使用字符串键)?

最佳答案

JSON 生成器将符号转换为字符串,因为 JSON 不支持符号。由于 JSON 键都是字符串,因此解析 JSON 文档会默认生成带有字符串键的 Ruby 哈希。

您可以使用 symbolize_names 选项告诉解析器使用符号而不是字符串。

示例:

original_hash = {:info => [{:from => "Ryan Bates", :message => "sup bra", :time => "04:35 AM"}]}
serialized = JSON.generate(original_hash)
new_hash = JSON.parse(serialized, {:symbolize_names => true})

new_hash[:info]
#=> [{:from=>"Ryan Bates", :message=>"sup bra", :time=>"04:35 AM"}]

引用:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/JSON.html#method-i-parse

关于ruby-on-rails - Ruby JSON 解析更改哈希键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com