UNWRAP_ROOT_VALUE提供了意外的匹配

时间:2019-05-02 20:28:31

标签: jackson jersey-client jackson-databind

我对杰克逊很陌生,所以如果有明显的解决方案,请提前道歉。

我正在编写Jersey客户端,并尝试以以下格式反序列化JSON:

{
    "success": true,
    "someEntity": {
        "someField": 123
    }
}

现在,如果“成功”字段不存在,这将非常简单,因为我可以将ObjectMapper配置为使用DeserializationFeature.UNWRAP_ROOT_VALUE,并将其内容反序列化为SomeEntity。

我的Response对象看起来像:

public class Response<T>
{
    private boolean success;
    private T entity;

    public T getEntity()
    {
        return entity;
    }

    public boolean isSuccess() {
        return success;
    }
}

entity应该在哪里...

public class SomeEntity
{
    private int someField;

    public int getSomeField()
    {
        return someField;
    }
}

在不进行任何配置的情况下尝试将上述JSON反序列化为Response<SomeEntity>时,我得到:Unrecognized field "someEntity" (class Response)

我很幸运地在@JsonProperty("someEntity")字段中添加了entity,但是显然我希望这个响应类是通用的,而不必为传递给客户端的每个实体创建一个。

我确定有一个简单的解决方案,我看不到-谢谢。

编辑:我也尝试使用@JsonTypeInfo无济于事。

0 个答案:

没有答案