Jersey JSON使用类名的根名称进行解析

时间:2016-08-19 16:25:50

标签: java json jax-rs jersey-2.0

我有一个pojo课。

@XmlRootElement(name = "project")
public class Project {

    private UUID id;
    private String label;
    private String name;

    //getters and setters
}

如果我从邮递员那里尝试,它接受这个作为输入。

{
    "label" : "label",
    "name" : "name"
} 

但是,我希望它接受值为

{
    "project" : {
        "label" : "label",
        "name" : "name"
    } 
}

我的端点方法是

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response createProject(Project project) {

        log.info("createProject called." + project);
        if (project == null) {
            return Response.ok(false).build();
        }

        ps = new ProjectServiceImpl();
        return Response.ok(ps.createProject(project)).build();
    }

还有其他各种方法,例如获取所有项目,其他方希望' root-name'或者' class-name'像这样在json的开头。我坚持这样的事情,这减缓了我的工作。请给我一些建议或提供我可以阅读的东西。

3 个答案:

答案 0 :(得分:1)

我认为SerializationFeature.WRAP_ROOT_VALUEDeserializationFeature.UNWRAP_ROOT_VALUE是您正在寻找的配置选项。

在这里阅读更多内容:

https://github.com/FasterXML/jackson-databind/wiki/Serialization-Features https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features

答案 1 :(得分:0)

请使用@XmlRootElement而不是@XmlRootElement(name =“project”)并试用

答案 2 :(得分:0)

如果您使用弹簧并使用休息服务,那么这是一个很好的阅读 - http://spring.io/guides/gs/consuming-rest/