我在Ruby中创建一个哈希,并希望以正确的格式将其写入JSON文件.
这是我的代码:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
Run Code Online (Sandbox Code Playgroud)
以下是生成的文件的内容:
key_aval_akey_bval_b
Run Code Online (Sandbox Code Playgroud)
我正在使用Sinatra(不知道是什么版本)和Ruby v 1.8.7.
如何以正确的JSON格式将其写入文件?
我有一个使用Ruby标准库中的Set类的数据结构.我希望能够将我的数据结构序列化为JSON字符串.
默认情况下,将序列化设置为数组:
>> s = Set.new [1,2,3]
>> s.to_json
=> "[1,2,3]"
Run Code Online (Sandbox Code Playgroud)
在尝试反序列化之前哪个是好的.
所以我定义了一个自定义to_json方法:
class Set
def to_json(*a)
{
"json_class" => self.class.name,
"data" => {
"elements" => self.to_a
}
}.to_json(*a)
end
def self.json_create(o)
new o["data"]["elements"]
end
end
Run Code Online (Sandbox Code Playgroud)
哪个效果很好:
>> s = Set.new [1,2,3]
>> s.to_json
=> "{\"data\":{\"elements\":[1,2,3]},\"json_class\":\"Set\"}"
Run Code Online (Sandbox Code Playgroud)
直到我把Set放入哈希或其他东西:
>> a = { 'set' => s }
>> a.to_json
=> "{\"set\":[1,2,3]}"
Run Code Online (Sandbox Code Playgroud)
知道为什么to_json当Set嵌套在另一个对象中时我的自定义不被调用?