2011-08-08 45 views
0

我有一個JSON對象,我想將其轉換爲/字符。json使用ruby逃脫鏈接

對象:

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

期望的結果:

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

我怎麼能在Ruby中,回報率做這種轉變?

回答

1

如果完全可能,請在JSON調用之前對其進行修改。在activerecord中,我相信你可以改變它的值並將其轉換爲JSON - 只要你不保存模型,這個改變將被丟棄。

在Ruby中,JSON只是一個字符串,那麼你可以做

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

這將轉換任何前進中的鍵斜線,太。我不知道任何JSON字符串會在字符串外包含正斜槓的原因,所以應該沒問題。

如果你想避免轉換鍵,你可以使用一個(稍微複雜)的正則表達式:

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

這個發現,以冒號開始部分,可能經過一些空格,然後一些雙引號。然後它會尋找一些可選的東西(任何不是雙引號的東西),然後是正斜槓,他們更多的東西不是雙引號,然後是實際的雙引號。所以基本上,它會找到的最小值爲:"/" - 然後它將每個匹配的字符串傳遞到塊中,並運行以前的gsub來轉換斜槓。然後塊的輸出將替換初始gsub中發現的任何內容。

我相信有更好的方法,所以玩。