我正在使用Jersey编写一个 REST 接口,并将其配置为使用 JacksonXML 进行 JSON<->POJO 转换。我有一组这样的类:
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JsonPo {
public Long id;
public String type;
public Boolean committed;
public String owner;
// ...
在我的主类中引用如下:
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JsonPoReq {
public Long id;
public String pathstring;
public int firstrecord;
public JsonPo obj;
// ...
REST 资源当然是这样的:
@POST
@Path("path")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response byPath(JsonPoReq req) {
// ...
序列化(POJO->JSON)工作正常。如您所料, JsonPo对象中的属性在JSON 对象中被序列化。
反过来不行。即使我将序列化的字符串反馈回来。发生的情况是obj属性始终设置为null。
编辑:根据要求,以下是 JSON 字符串的样子:
{
"id" : 2,
"pathstring" : "/a/b/c",
"firstrecord" : 0,
"obj" : {
"id" : 2,
"type" : "ProtoObject",
"committed" : false,
"owner" : "admin"
}
}
我一直在查看JacksonXML Annotations以了解如何解决此问题,但我无法提出任何建议。我应该采取其他步骤吗?
更新:问题不是真的。调用了一些我没有注意到的应用程序代码正在清除对象。