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 に答える