HTTParty双重逃脱我的json

时间:2011-11-27 20:55:00

标签: ruby ruby-on-rails-3 json httparty

我在Ruby中有一些模型需要通过HTTParty / Put发送到Java / RestEasy服务器。

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解析器borks:

  

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:无法反序列化   [来源:START_OBJECT标记中的java.lang.String实例   org.mortbay.jetty.HttpParser$Input@4092fef5;行:1,专栏:22]在

我尝试让httparty转换为json为我,认为httparty转义字符,编写我自己的as_json方法,但这是输出不是我想要的json,错误的字段在这里而我的as_json方法不是称为:

  

{:主体=>配置::客户:: ConfigurationMapping:0x00000100c78930   @dimensions = {“tester”=>“Integration Test”,“tier”=>“qa”,   “timeStamp”=>“ - 4712-01-01”},@ key =“Integration Test Key”,   @ group =“test”,@ value =“moo”>,:format =>:json,   :标题=> { “内容类型”=> “中的应用/ JSON”,   “content-type”=>“application / json”,“Accept”=>“application / json”}}

导致字符串双重转义的原因是什么?

1 个答案:

答案 0 :(得分:0)

我弄清楚了问题,我的json格式不正确。我重新格式化了数据包,但它确实有效。