Jersey客户端使用application / json类型发送字符串

时间:2015-08-13 19:00:05

标签: java json jersey genson

我需要使用JSONJersey client 1.19发送已经采用genson 1.3格式的字符串

Client.create().resource(path).webResource.type(MediaType.APPLICATION_JSON_TYPE)
.accept(MediaType.APPLICATION_JSON_TYPE).put(ClientResponse.class, jsonAsString)

这个问题是客户端正在解析字符串,我需要它按原样发送。 我发送了{ "name":"Foo" }之类的内容,客户端正在将其转换为"{ \"name\":\"Foo\" }"。如果我将类型更改为PLAIN_TEXT,则会正确发送请求,但我需要将其发送为application/json

2 个答案:

答案 0 :(得分:1)

所以是的,Genson会尝试将您的字符串编码为文字json字符串。在这种情况下,它可能不是你想要的,但更一般地说它是人们所期望的:将java字符串序列化为json字符串。

我看到的解决方案是扩展GensonJsonConverter并覆盖isWritable以在输入类型为字符串时返回false。然后注册它。这应该有用。

我已打开this issue,因此可以将其添加为更灵活的功能。

答案 1 :(得分:0)

尝试将MediaType.APPLICATION_JSON_TYPE更改为MediaType.APPLICATION_JSON http://examples.javacodegeeks.com/enterprise-java/rest/jersey/json-example-with-jersey-jackson/