在我的当前设置中,我使用Jersey 2.0和MOXy,如Jersey文档所述。我完全依赖于“可自动发现的特性”,因此不使用任何额外的配置或JAXB注释。
我的任务是在服务器端反序列化一个字符串数组。客户端发送JSON消息:
问题: stringList的内容为{null,null},因此元素数量始终正确,但字符串被设置为null。
使用一个小的包装类也可以解决这个问题。以下是该类:
更改方法签名为stringArray(Data data),并将JSON消息更改为:
这两种方法有什么区别,我如何让普通字符串数组正常工作?
更新: @Blaise的答案解决了所描述的问题。但是,序列化POJOs列表的相关问题仍无法解决。消息如下:
[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: 找不到用于媒体类型=application/json、类型=class java.util.ArrayList、泛型类型=class java.util.ArrayList的MessageBodyWriter。]
我找到的唯一解决方案是再次使用包含List的小包装类...
我的任务是在服务器端反序列化一个字符串数组。客户端发送JSON消息:
["foo","bar"]
在服务器端,以下方法头应反序列化它:
@POST
@Path("/stringArray")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response stringArray(List<String> stringList) {
...
}
问题: stringList的内容为{null,null},因此元素数量始终正确,但字符串被设置为null。
使用一个小的包装类也可以解决这个问题。以下是该类:
public static class Data {
public List<String> stringList;
}
更改方法签名为stringArray(Data data),并将JSON消息更改为:
{"stringList": ["foo","bar"]}
这两种方法有什么区别,我如何让普通字符串数组正常工作?
更新: @Blaise的答案解决了所描述的问题。但是,序列化POJOs列表的相关问题仍无法解决。消息如下:
[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: 找不到用于媒体类型=application/json、类型=class java.util.ArrayList、泛型类型=class java.util.ArrayList的MessageBodyWriter。]
我找到的唯一解决方案是再次使用包含List的小包装类...