我有以下内容:
create_table "events", options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
t.string "meta_data"
end
打开Valentina Studio并查看事件表时,我可以看到一条记录:
ID meta_data
1 {"action"=>"bla"}
当我致电Event.last.meta_data
时,我收到以下字符串:
"{\"action\"=>\"bla\"}
如何在没有转义字符的情况下获取此字符串值?我已经尝试了深层转换并只是进行gsubbing,但是这些都没有感觉到我做对了。
预先感谢
答案 0 :(得分:2)
没有任何转义字符。
您正在查看的是在控制台上检查时字符串的表示形式。
请考虑以下内容:
irb(main):001:0> x = '"hello"'
=> "\"hello\""
irb(main):002:0> puts x
"hello"
该字符串不包含任何反斜杠。但是检查时,必须使用反斜杠以区分“字符串结尾”与“字符串内的引号”。
答案 1 :(得分:0)
我能做到的最丑陋的方法是:
JSON.parse(string.gsub("=>", ":").gsub(":nil,", ":null,"))
如果有人不那么丑陋,请告诉我