Hash#to_s(inspect的别名)始终以1.8散列样式输出数据:
{key: "value"}.to_s
=> "{:key=>\"value\"}"
是否有任何核心方法会以1.9散列样式序列化它?
{key: "value"}.to_s
=> "{key: \"value\"}"
我正在使用已知数据进行代码重构;由于Ruby倾向于实现一切,我希望我只是在错误的地方。
当然,你可以用丑陋的方式破解它
"{" + my_hash.to_a.map{|pair| pair[0].to_s + ": " + pair[1].inspect} * ",\n") + "}"
但是我希望有一个核心方法可以进行单元测试并完全正确。
答案 0 :(得分:2)
这对我有用......它尊重字符串键。
{key: "value"}.to_s.gsub(/(:(\w+)\s?=>\s?)/, "\\2: ")
答案 1 :(得分:1)
require 'json'
{key: "value"}.to_json
=> "{\"key\":\"value\"}"