我在Java中使用Jackson从REST端点返回JSON响应。这是生成的示例响应:
{"StatusCode":{"@statusCode":"OK"},"SomeElements":null}
问题:
注意:这个问题与this不同,我想知道杰克逊为什么要添加它,以及如何阻止它这样做,因为它可能会导致系统出现问题将回复传递给。
修改
以下是已清理的代码:
public enum StatusCodeType {
OK, WARNING, ERROR
}
@XmlType(name = "StatusResponse", namespace = "http://www.w3.org/2001/XMLSchema/<obfuscated>", propOrder = {"statusCode", "message"})
@XmlAccessorType(XmlAccessType.FIELD)
public class StatusResponse {
@XmlAttribute(name = "statusCode", required = true)
private StatusCodeType statusCode;
@XmlAttribute(name = "message")
private String message;
public StatusResponse(final StatusCodeType statusCode, final String message) {
this.statusCode = statusCode;
this.message = message;
}
public StatusResponse(final StatusCodeType statusCode) {
this.statusCode = statusCode;
}
public StatusResponse() {
}
public StatusCodeType getStatusCode() {
return statusCode;
}
public void setStatusCode(StatusCodeType statusCode) {
this.statusCode = statusCode;
}
public void setMessage(String message) {
this.message = message;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class SomeResponse {
@XmlElement(name = "StatusCode", required = true)
private StatusResponse statusResponse;
public StatusResponse getStatusResponse() {
return statusResponse;
}
public void setStatusResponse(StatusResponse statusResponse) {
this.statusResponse = statusResponse;
}
}
@XmlRootElement(name = "XmlResponse", namespace = "http://www.w3.org/2001/XMLSchema/<obfuscated>")
public class XmlResponse extends SomeResponse {
@XmlElement(name = "SomeElement")
@XmlElementWrapper(name = "SomeElements", required = true)
private List<SomeElement> someElements;
public List<SomeElement> getSomeElements() {
return someElements;
}
public void setSomeElements(List<SomeElement> someElements) {
this.someElements = someElements;
}
}
@Path("/getAll")
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getAll(@QueryParam("firstParam") String firstParam, @QueryParam("secondParam") String secondParam) {
...
final XmlResponse resp = processToXmlResponse(someObject);
return Response.ok().entity(resp).build();
}