當我嘗試將一個ruby字符串解析爲JSON時,self.id引發了有關無效令牌的錯誤。如何JSON解析具有插值的ruby字符串?
JSON.parse "{ 'description' => 'client #{self.id} has been deleted.' }"
我試着用單引號圍繞對象,但是這樣會導致沒有插值。如何獲得插值和成功的JSON解析?
當我嘗試將一個ruby字符串解析爲JSON時,self.id引發了有關無效令牌的錯誤。如何JSON解析具有插值的ruby字符串?
JSON.parse "{ 'description' => 'client #{self.id} has been deleted.' }"
我試着用單引號圍繞對象,但是這樣會導致沒有插值。如何獲得插值和成功的JSON解析?
這裏的問題是,即使沒有內插值,你的字符串也是無效的JSON。
"{ 'description' => 'client has been deleted.' }"
以下是有效的JSON:
'{ "description": "client has been deleted." }'
注意圍繞重點和價值的雙引號,以及哈希火箭=>
結腸:
反而是紅寶石具體。
也許你正試圖將Ruby哈希轉換爲json?
require 'json'
id = 5
x = { 'description' => "client #{id} has been deleted." }.to_json
puts x # '{ "description": "client 5 has been deleted." }'
好像你只是試圖從一個字符串運行一些紅寶石。因此,假設self.id爲1:
eval "{ 'description' => 'client #{self.id} has been deleted.' }"
會產生:
=> {"description"=>"client 1 has been deleted."}
使用「eval」不是有點危險嗎? –
也許,但OPs問題與包含(有效)代碼塊的字符串有關。我看不到任何解析方式,不包括某種eval - 他們想要編寫某種定製解析器。 – gamut
我覺得海報不知道他貼是不是真的JSON,或JS。他們顯然有一個紅寶石串,只是試圖評估它。 – gamut
我試圖解析JSON,但是在放棄讓JSON工作之後,我不小心複製並粘貼了ruby哈希。這仍然不適合我。這是我得到的錯誤。 JSON :: ParserError:757:'{「description」:「client#{self.id}中的意外標記一直是#{action_past}。」 ,「new_values」=>「#{changes || {}}」}' – ChrisPalmer
''{「description」:「client#{self.id} has#{action_past}。」 ,「new_values」=>「#{changes || {}}」}''這仍然是無效的JSON。那裏有散列火箭而不是冒號。 –