如何实现抽象类和子类来使用jackson注释来改变结构来解析json

时间:2014-06-05 04:44:05

标签: android annotations jackson restlet

我问道:

when geting objects from a Json with restlet how can I get different objects in case the Json chnges its structure

所以我正在实现一个带有2个子类的抽象类,如下所示:

Answer

我按照杰克逊注释中的文档:jackson-annotationsAnnotation Type JsonTypeInfo

但我不知道如何://包含Java类名(" com.myempl.ImplClass")作为JSON属性" class"

在抽象类上:

@JsonTypeInfo(use=Id.CLASS, include=As.PROPERTY, property="class")

我收到错误:

  1. 无法将ID解析为变量
  2. 由于无法解析为变量
  3. 在子类中:

    @JsonTypeInfo(use=Id.NAME, include=As.WRAPPER_OBJECT)
    @JsonSubTypes({com.smartenit.client.business.rest.CapabilityWhenReadingAllDevices.class,
        com.smartenit.client.business.rest.CapabilityWhenRequestingAttribute.class})
    

    我收到错误:

    1. 无法将ID解析为变量
    2. 由于无法解析为变量
    3. 注释属性JsonSubTypes.value的值必须是@ com.fasterxml.jackson.annotation.JsonSubTypes.Type注释

1 个答案:

答案 0 :(得分:0)

我认为Jackson API已经发展了。 我尝试了使用restlet 2.2(利用jackson 2.2)的示例注释(位于抽象类):

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = As.PROPERTY, property = "@class")
@JsonSubTypes({ @Type(value = Impl1.class, name = "impl1"),
        @Type(value = Impl2.class, name = "impl2") })

你可以尝试一下吗?