2011-08-08 4 views
0

私はJSONオブジェクトを持っています。エスケープ/文字を変換したいと思います。ruby​​を使用してjsonのリンクをエスケープします

オブジェクト:

{ 
"id":"123", 
"name":"test", 
"link":"https://google.com" 
} 

望ましい結果:

{ 
"id":"123", 
"name":"test", 
"link":"https:\/\/google.com" 
} 

どのように私は、Ruby、RoRの中でこの変換を行うことができますか?

答えて

1

可能な場合は、JSONされる前に値を変更してください。アクティブレコードでは、値を変更してJSONに変換できると思います。モデルを保存しない限り、その変更は破棄されます。あなたがこれは任意の前方には、あまりにも、キーにスラッシュ変換します

my_json.gsub('/', '\\/') 

を行うことができますので、ルビー、JSONで

は、単なる文字列です。 JSON文字列に文字列の外にスラッシュが含まれているという理由がわからないので、うまくいくはずです。

あなたが鍵を変換しないようにしたい場合は、あなたが(少し複雑)な正規表現を使用できます。

my_json.gsub(/:\s*"[^"]*\/[^"]*"/) { |m| m.gsub('/', '\\/') } 

をこれは、その後、おそらくコロン、いくつかの空白で始まるセクションを見つけ、その後、いくつかのダブル引用符。次に、オプションのもの(二重引用符ではないもの)、スラッシュ(二重引用符ではないもの)、実際の二重引用符などを探します。したがって、本質的に最小値は:"/"です - ブロックに一致する各文字列を渡し、前のgsubを実行してスラッシュを変換します。ブロックの出力は、最初のgsubで見つかったものを置き換えます。

私は確かに控えめな方法があるので、遊んでください。

関連する問題