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

Lil*_*ver 6 ruby serialization hashmap

散列#to_s(检查的别名)始终以1.8散列样式输出数据:

{key: "value"}.to_s
=> "{:key=>\"value\"}"
Run Code Online (Sandbox Code Playgroud)

是否有任何核心方法将以1.9散列样式序列化它?

{key: "value"}.to_s
=> "{key: \"value\"}"
Run Code Online (Sandbox Code Playgroud)

我在已知数据上使用它来进行代码重构; 由于Ruby倾向于实现一切,我希望我只是在寻找错误的地方.

当然,你可以用丑陋的方式破解它

"{" + my_hash.to_a.map{|pair| pair[0].to_s + ": " + pair[1].inspect} * ",\n") + "}"
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

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


bri*_*ver 2

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

=> "{\"key\":\"value\"}" 
Run Code Online (Sandbox Code Playgroud)

  • 接近,但不是我要找的。我正在寻找 `{key: "value"}`,而不是 `{"key":"value"}` (2认同)