无法在 JAXB 解组中映射字段,字段填充为 null

Not able to map field in JAXB unmarshalling, fields getting populated as null

我有一个 XML,我想使用 JAXB 将其转换为 POJO,但我无法做到,父 class 中的所有元素都被填充为 null.

输入XML:

<Response>
  <parameters>
    <Id>101</Id>
    <Status>SUCCESS</Status>
  </parameters>
</Response>

FileWriterService.writeMethod()

  JAXBContext context = JAXBContext.newInstance(Response.class);
  Response response = (Response) context.createUnmarshaller().unmarshal(new 
  StringReader(inputXml));
  System.out.println("response: " + response);

输出:

response: ClassPojo [parameters = ClassPojo [Id = null, Status = null]]

Response.java

@XmlRootElement(name="Response")
public class Response {

    private Parameters parameters;

    public Parameters getParameters() {
        return parameters;
    }

    public void setParameters(Parameters parameters) {
        this.parameters = parameters;
    }

    @Override
    public String toString() {
        return "ClassPojo [parameters = " + parameters + "]";
    }

}

Parameters.java

public class Parameters {

    private String Id;
    private String Status;

    public String getId() {
        return Id;
    }

    public void setId(String Id) {
        this.Id = Id;
    }

    public String getStatus() {
        return Status;
    }

    public void setStatus(String Status) {
        this.Status = Status;
    }

    @Override
    public String toString() {
        return "ClassPojo [Id = " + Id + ", Status = " + Status + "]";
    }
}

尝试使用@XmlElement 注释,此注释将字段映射到 xml 元素

Response.java

@XmlElement
private Parameters parameters;

Parameters.java

@XmlElement
private String Id;
@XmlElement
private String Status;

感谢Lakshan 指点。实施您的解决方案后,原始问题得到解决,但出现相关错误 com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions

除了您的更改之外,我还必须添加 XmlAccessorType

@XmlRootElement(name = "Response")
@XmlAccessorType(XmlAccessType.FIELD)
public class Response {