require 'json'
begin
hash = {"a" => "b"}
raise StandardError, hash
rescue Exception => e
q = e.message
p q
p q.to_json
end
它應該打印"{\"a\":\"b\"}"
但它打印"\"{\\\"a\\\"=>\\\"b\\\"}\""
。任何原因?JSON格式不救援塊到來 - 紅寶石
require 'json'
begin
hash = {"a" => "b"}
raise StandardError, hash
rescue Exception => e
q = e.message
p q
p q.to_json
end
它應該打印"{\"a\":\"b\"}"
但它打印"\"{\\\"a\\\"=>\\\"b\\\"}\""
。任何原因?JSON格式不救援塊到來 - 紅寶石
的第二個參數的raise
方法始終被視爲一個字符串,所以你不能有從救援哈希,你可以將其轉換成JSON和背部
require 'json'
begin
hash = {"a" => "b"}
raise StandardError, hash.to_json # to string
rescue Exception => e
q = JSON.parse(e.message) # from string
p q.to_json
end
=> "{\"a\":\"b\"}"
我也知道邪惡的方式與eval
:
require 'json'
begin
hash = {"a" => "b"}
raise StandardError, hash
rescue Exception => e
q = eval(e.message)
p q.to_json
end
=> "{\"a\":\"b\"}"
但它不好。使用eval
這真的很糟糕。
使用'puts' /'print'而不是'p'。 – mudasobwa
puts/prints給出{「a」=>「b」}「{\」a \「=> \」b \「}」,而不是「{\」a \「:\」b \「}」 – Amith
if你執行'require'json' hash = {「a」=>「b」} print hash.to_json'然後打印{「a」:「b」}。我的問題是爲什麼當它傳遞給救援塊時它不打印相同的結果 – Amith