POST中自动反序列化嵌套的json-Jersery + Jackson-数据库行中缺少类指示符字段

时间:2019-01-06 13:13:44

标签: rest post jackson jersey jackson-databind

我有看起来像这样的POST方法

    POST
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/newJob")
    public JobResponseDTO addNewJob(JobDataDTO jobDataDTO) {

JobDataDTO看起来像这样

    public String jobName;

    public JsonNode info;

    public String jobType;

info属性包含没有定义结构的嵌套json。

我正在使用Jersey和Jackson。

每当我通过以下方式传递json:-

{
    "jobName": "MysqlJob",
    "jobType": "Mysql",
    "info:   : {
      "key"    : "xyz",
      "params" : {
          "resource": "item",
           "request_id": "c0f2befd-540e-44f9-84b5-9094be40b983",
           "date": "2018-11-30 PST;2018-12-16 PST",
        }
    }
}

我正在例外。

avax.servlet.ServletException: javax.servlet.ServletException: Exception [EclipseLink-44] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.DescriptorException|Exception Description: Missing class indicator field from database row [org.eclipse.persistence.internal.oxm.record.UnmarshalRecordImpl@1b1bfcec].|Descriptor: XMLDescriptor(com.fasterxml.jackson.databind.JsonNode --> [])

很多人被困在这里。

1 个答案:

答案 0 :(得分:0)

我能够按照以下方式进行操作。

在JobDataDTO的构造函数中添加@JsonCreator属性,并在构造函数的args中声明@JsonProperty。

@JsonCreator
public JobDataDTO(@JsonProperty("info") JsonNode info, String jobName, String jobType)```