让json成为一个pojo

时间:2015-08-09 17:53:00

标签: java json jersey pojo

这是我的对象

public class ServiceGroup {

    private String ParticipantIdentifierScheme;
    private String ParticipantIdentifierValue;

    public void setParticipantIdentifierScheme(String ParticipantIdentifierScheme) {
        this.ParticipantIdentifierScheme = ParticipantIdentifierScheme;
    }

    public String getParticipantIdentifierScheme() {
        return ParticipantIdentifierScheme;
    }

    public void setParticipantIdentifierValue(String ParticipantIdentifierValue) {
        this.ParticipantIdentifierValue = ParticipantIdentifierValue;
    }

    public String getParticipantIdentifierValue() {
        return ParticipantIdentifierValue;
    }

请求以这种方式处理

@Path("/participants")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response addUserToSMP(@HeaderParam("authorization") String authString, ServiceGroup sg) {
    return Response.ok().entity(sg).build();
}

我已经放了那个小的响应,以便看看究竟解析了什么。

我的输入应该是这样的

{
  "ParticipantIdentifierScheme": "scheme",
  "ParticipantIdentifierValue": "value"
}

但输出如下

{
  "participantIdentifierScheme": null,
  "participantIdentifierValue": null
}

我真正想要的是以某种方式检查输入是否格式正确,并将它们保存在ServiceGroup对象中以供进一步使用

更新

将变量设置为public将返回以下内容

{
  "ParticipantIdentifierScheme": "scheme",
  "participantIdentifierScheme": "scheme",
  "ParticipantIdentifierValue": "value",
  "participantIdentifierValue": "value",
 }

更新2

@XmlRootElement
public class ServiceGroup {

    @XmlElement(name = "ParticipantIdentifierScheme")
    private String ParticipantIdentifierScheme;

    @XmlElement(name = "ParticipantIdentifierValue")
    private String ParticipantIdentifierValue;

我得到了

{
  "ParticipantIdentifierScheme": "scheme",
  "participantIdentifierScheme": "scheme",
  "ParticipantIdentifierValue": "value",
  "participantIdentifierValue": "value"
}

1 个答案:

答案 0 :(得分:0)

问题是序列化还会查看你的getter方法。您应该只将getter方法注释为元素。它看到了4个不同的值,因为您将大写变量名称作为私有变量,而getter将被视为小写。您还可以使用@XmlAccessorType指定您只想序列化公共成员。

见这里

http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html

将变量更改为小写,仅注释getter方法。不要注释setter方法。它会抱怨,因为它是多余的。

@XmlRootElement
public class ServiceGroup {

    private String participantIdentifierScheme;
    private String participantIdentifierValue;

    public void setParticipantIdentifierScheme(String ParticipantIdentifierScheme) {
        this.ParticipantIdentifierScheme = ParticipantIdentifierScheme;
    }

    @XmlElement(name = "ParticipantIdentifierScheme")
    public String getParticipantIdentifierScheme() {
        return ParticipantIdentifierScheme;
    }

    public void setParticipantIdentifierValue(String ParticipantIdentifierValue) {
        this.ParticipantIdentifierValue = ParticipantIdentifierValue;
    }

    @XmlElement(name="ParticipantIdentifierValue")
    public String getParticipantIdentifierValue() {
        return ParticipantIdentifierValue;
    }