0

我想转换字符串:

"{\"message\":\"success\"}"

进入:

{:message => "success"}

在 Ruby 中有没有简单的方法来做到这一点?

success可能不是一个简单的字符串,而是另一个可能是另一个对象的相同形式的字符串。

4

3 回答 3

4

JSON#parse可以选择制作哈希键的符号(奇怪地命名为“symbolize_names”)

require 'json'
p some_hash = JSON.parse("{\"message\":\"success\"}", {:symbolize_names=>true})
#=> {:message=>"success"}
于 2012-05-06T14:32:06.597 回答
1

你需要一个 JSON 解析器。查看http://www.json.org并找到一个合适的解析器,它将返回适当的 Ruby 类。

这看起来是一个不错的候选人: http: //flori.github.com/json/

另请参阅下面关于Ruby 库中的标准 JSON 解析器的“mu 太短”评论。

于 2012-05-06T06:04:44.180 回答
-3

以下可能是任何丑陋的方法,但只是另一种方法:

str=["{\"message\":\"success\"}", "{\"new_message\":\"fail\"}"] #=> ["{\"message\":\"success\"}", "{\"new_message\":\"fail\"}"]

new=[];str.each{|string| new<<string.gsub(/["{}]/,'').split(':')}
new #=> [["message", "success"], ["new_message", "fail"]]
new=new.transpose #=> => [["message", "new_message"], ["success", "fail"]]
hash=Hash.new #=> {}
new[0].each_with_index{|x,i| hash[x.to_sym]=new[1][i]} #=> ["message", "new_message"]
hash #=> {:message=>"success", :new_message=>"fail"}

让我知道它是否有帮助。

祝你好运

于 2012-05-06T06:28:18.853 回答