HTTPart дважды убегает мой JSON - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть несколько моделей в 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"}}

Что приводит к двойному экранированию строки?

1 Ответ

0 голосов
/ 28 ноября 2011

Я выяснил проблему, мой JSON был отформатирован неправильно. Я переформатировал пакет, и он работал.

...