【问题标题】:Jersey JSON parsing with root name of class name使用类名的根名称解析 Jersey JSON
【发布时间】:2016-08-19 16:25:49
【问题描述】:

我有一个 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();
    }

还有其他各种类似的方法,例如获取所有项目,其中对方在 json 开头期望像这样的 'root-name' 或 'class-name'。我被这样的事情困住了,它减慢了我的工作速度。请给我一些建议或提供我可以阅读这些内容的任何来源。

【问题讨论】:

    标签: java json jax-rs jersey-2.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

    【讨论】:

      【解决方案2】:

      请使用@XmlRootElement 代替@XmlRootElement(name = "project") 并尝试一下

      【讨论】:

        【解决方案3】:

        如果您正在使用 spring 并使用休息服务 - http://spring.io/guides/gs/consuming-rest/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-26
          • 2023-03-14
          • 1970-01-01
          • 2020-08-09
          • 2011-12-22
          相关资源
          最近更新 更多