gpt4 book ai didi

Ruby解析JSON.load和YAML.load生成不同的key类型

转载 作者:数据小太阳 更新时间:2023-10-29 09:03:10 27 4
gpt4 key购买 nike

我一直在寻找序列化/反序列化数据的不同选项。

我注意到一件事,当将 json 字符串转换为散列时,它使用字符串文字作为键。当我将 yaml 字符串转换为哈希时,它使用符号作为键。我假设这是因为对于 json,它们的键值必须是字符串?

当它转换回散列时,是否有任何标志可用于指定或控制此行为?

require 'json'
require 'yaml'

test_hash = {:name => "TestHash",
:key1 => "value1",
:key2 => 500
}

# Convert the Hash to JSON/YAML strings
#
yaml_string = test_hash.to_yaml
json_string = test_hash.to_json

puts "Hash to YAML #{yaml_string}"
puts "Hash to JSON #{json_string}"

# Now use the JSON/YAML methods to convert back
# to a hash
#
hash_from_yaml = YAML.load(yaml_string)
hash_from_json = JSON.load(json_string)

puts "Original Hash #{test_hash}"
puts "YAML Hash #{hash_from_yaml}"
puts "JSON Hash #{hash_from_json}"

产生以下输出:

Hash to YAML ---
:name: TestHash
:key1: value1
:key2: 500

Hash to JSON {"name":"TestHash","key1":"value1","key2":500}


Original Hash {:name=>"TestHash", :key1=>"value1", :key2=>500}
YAML Hash {:name=>"TestHash", :key1=>"value1", :key2=>500}
JSON Hash {"name"=>"TestHash", "key1"=>"value1", "key2"=>500}

最佳答案

根据 http://ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/JSON.html

您可以改用 JSON.parse,它有一个选项 symbolize_names

JSON.parse(File.read('data.json'), symbolize_names: true)

关于Ruby解析JSON.load和YAML.load生成不同的key类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30456745/

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