简体   繁体   English

杰克逊·李斯特 <E> json序列化

[英]Jackson List<E> json serialization

Hi, im creating a jersey 2.0+ rest web service. 嗨,我创建了jersey 2.0+ rest Web服务。 I was using 1.7 and now im trying to migrate it to 2.0. 我使用的是1.7,现在我正尝试将其迁移到2.0。

I have 2 classes with E objects for handle responses: 我有2个带有E对象的类,用于处理响应:

public class JsonMessageSingle<E> {

private int status;
private String message;
private E data; // for single objects

} }

And one that uses: 一种使用:

private List<E> data; // for list of objects

My responses are all in this format: 我的回复都是以下格式:

@GET
@Produces("application/json")
public JsonMessageList<User> getUser() {
    List<User> list = new UserDao<User>().findAll();

    return new JsonMessageList<User>(list); //constructor create status and message basesd on object passed (if null == "error")
}


Using jersey 1.7 everything was ok on the response, but now i got: 使用jersey 1.7,响应一切正常,但现在我得到了:

HTTP Status 500 - Internal Server Error

And no exception/error on the console. 控制台上没有异常/错误。 It cant serialize the List>E<, all other objects are serialized correctly. 它无法序列化List> E <,所有其他对象均已正确序列化。 Can someone help me? 有人能帮我吗? Thanks in advance. 提前致谢。

Find out it was my mistake. 找出这是我的错误。 Even if you have jackson as dependences (as sugested by jersey itself) you have to configure jersey.media to use jackson as default parser. 即使您将jackson作为依赖项(如jersey本身所暗示),也必须将jersey.media配置为使用jackson作为默认解析器。

Using maven, update your pom.xml with: 使用maven,使用以下命令更新您的pom.xml:

<dependency>
   <groupId>org.glassfish.jersey.media</groupId>
   <artifactId>jersey-media-json-jackson</artifactId>
   <version>2.10.1</version>
</dependency>

instead of: 代替:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-moxy</artifactId>
   <version>2.10.1</version>
</dependency>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM