2011-11-27 57 views
0

我有幾個Ruby模型需要通過HTTParty/Put發送到Java/RestEasy服務器。HTTParty double escapes my json

configuration_mapping.rb:

def as_json(options = {}) 
    {:configGroup => @group, :coordinates => {@key => @value}} 
end 

def self.put(endpoint, content, tier = 'nursery') 
    response = HTTParty.put(base_uri + endpoint, json_payload(content)) 
end  

def self.json_payload(content) 
    { 
    :body => content.to_json, 
    :format => :json, 
    :headers => {"Content-Type" => "application/json", "content-type" => "application/json", "Accept" => "application/json"} 
    } 
end 

的JSON得到雙轉義:

{:體=>」 { \ 「configGroup \」:\ 「測試\」, \「座標\」:{ \「Integration Test Key \」:\「moo \」 }}「,:format =>:json,:headers => {」Content-Type「=>」application/json「 ,「內容類型」
=> 「應用/ JSON」, 「接受」=> 「應用/ JSON」}}

和Jackson JSON解析器borks:

2011-11-26 15:34:11179 ERROR [tp-1442358158-0] [REPORT] [] [asy.core.SynchronousDispatcher]執行失敗PUT /v1/groups/test/mappings; tester = Integration Test; tier = qa; timeStamp = -4712-01- 01 org.jboss.resteasy.spi.ReaderException: org.codehaus.jackson.map.JsonMappingException:無法反序列化 java.lang.String實例超出START_OBJECT tok en [來源: [email protected];線:1,列:22]在

我試圖讓httparty轉換成JSON對我來說,想httparty躲過了字,寫我自己的as_json方法,但是這是不是我想要的JSON輸出,錯誤的字段在這裏和我的as_json方法不叫:

{:體=>配置::客戶:: ConfigurationMapping:0x00000100c78930 @dimensions = { 「測試」=> 「綜合測試」,「 「=>」qa「, 」timeStamp「=>」 - 4712-01-01「},@key =」集成測試密鑰「, @ group =」test「,@ value =」moo「>,:: format =>:json, :headers => {「Content-鍵入 「=>」 應用/ JSON」, 「內涵式」=> 「應用/ JSON」, 「接受」=> 「應用/ JSON」}}

是什麼原因造成的字符串變成雙逃脫?

回答

0

我想通了這個問題,我的JSON格式不正確。我重新格式化了數據包,它工作正常。