У меня есть несколько моделей в Ruby, которые мне нужно отправить на сервер Java / RestEasy через HTTParty / Put.
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 удваивается:
{: body => "{
\ "ConfigGroup \": \ "тест \",
\"координаты\":{
\ "Ключ тестирования интеграции \": \ "moo \"
}} ",: format =>: json,: headers => {" Content-Type "=>" application / json "," content-type "
=> "application / json", "Accept" => "application / json"}}
И синтаксический анализатор JSON JSON:
2011-11-27 15: 34: 11 179 ОШИБКА [tp-1442358158-0] [ДОКЛАД] []
[asy.core.SynchronousDispatcher] Не удалось выполнить PUT
/ V1 / группы / тест / отображение; тестер = Интегрирование
Тест, уровень = QA; TIMESTAMP = -4712-01-01
org.jboss.resteasy.spi.ReaderException:
org.codehaus.jackson.map.JsonMappingException: не может десериализовать
экземпляр java.lang.String из токена START_OBJECT в [Источник:
org.mortbay.jetty.HttpParser$Input@4092fef5; строка: 1, столбец: 22] на
Я попытался позволить httparty преобразовать в json для себя, думая, что httparty избежал символов, написав свой собственный метод as_json, но это вывод, который не является тем json, который я хотел, неправильные поля здесь, а мой метод as_json - нет называется:
{: тело => Config :: Client :: ConfigurationMapping: 0x00000100c78930
@dimensions = {"tester" => "Интеграционный тест", "tier" => "qa",
"timeStamp" => "- 4712-01-01"}, @ key = "Ключ тестирования интеграции",
@ group = "test", @ value = "moo">,: format =>: json,
: Заголовки => { "Content-Type" => "приложения / JSON",
"content-type" => "application / json", "Accept" => "application / json"}}
Что приводит к двойному экранированию строки?