我在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”}}
导致字符串双重转义的原因是什么?
答案 0 :(得分:0)
我弄清楚了问题,我的json格式不正确。我重新格式化了数据包,但它确实有效。