是否有一个Ruby Hash#to_s等效于'new'Hash语法?

时间:2014-02-05 16:15:50

标签: ruby serialization hashmap

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") + "}"

但是我希望有一个核心方法可以进行单元测试并完全正确。

2 个答案:

答案 0 :(得分:2)

这对我有用......它尊重字符串键。

{key: "value"}.to_s.gsub(/(:(\w+)\s?=>\s?)/, "\\2: ")

答案 1 :(得分:1)

require 'json'
{key: "value"}.to_json

=> "{\"key\":\"value\"}"