我编写了一个类似于:
的JAX-RS API<ListBox
x:Name="lstBox"
Background="CadetBlue"
FontFamily="Consolas"
FontSize="14"
FontWeight="DemiBold"
ItemContainerStyle="{DynamicResource _ListBoxItemStyle}"
ItemTemplate="{StaticResource genreTemplate}"
MouseDoubleClick="lstBox_MouseDoubleClick" />
@POST
@Path("findallbyname")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.TEXT_PLAIN)
Response findAllByName(String payload);
为Response
的位置。 javax.ws.rs.core.Response
的{{1}}属性为entity
,因此此响应只返回字符串列表的JSON序列化。
在一个单独的应用中,我正在调用API(使用http-remoting库found here):
Response
然而,我收到此错误:
List<String>
好吧,这看起来像是一个简单的对象serde问题 - 它看起来像Service service = JaxRsClient.builder().build(Service.class, "<user-agent>", "<uri>");
Response response = service.findAllByName("some string");
是一个抽象类型,它不能在客户端反序列化(请求通过并返回状态200,根据服务器请求日志)。
我的问题是,由于我的原始API是用抽象的Caused by: com.fasterxml.jackson.databind.JsonMappingException:
Can not construct instance of javax.ws.rs.core.Response:
abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: java.io.BufferedReader@2ef14fe; line: 1, column: 1]
对象类型进行响应的,所以在反序列化我在客户端获得的响应对象时,我是否运气不好?我可以更改API,但我想问一下,看看是否有更好的方法可以在客户端解决这个反序列化问题。