2

我需要一些帮助来解决一个JSON序列化问题。

我有一堂这样的课:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorFormula("type")
@JsonSubTypes({ @JsonSubTypes.Type(value =TextFileCardEntity.class, name = "textCard"),
@JsonSubTypes.Type(value = MultipleChoiceFileCard.class, name = "choiceCard")@JsonSubTypes.Type(value = MultipleChoiceFileCard.class, name = "choiceCard")})
public class FileCardEntity extends ResourceEntity implements Cloneable {
    @NotNull
    @JsonIgnore
    private FileCardType type;
    private Date expirationDate;
        .....

我还有两个扩展 FileCardEntity 的类:

@JsonTypeName(value = "textCard")
public class TextFileCardEntity extends FileCardEntity {
    @Lob
    @Type(type = "org.hibernate.type.TextType")
    private String question;

    @Lob
    @Type(type = "org.hibernate.type.TextType")
    private String answer;
        .......

@Entity
@DiscriminatorValue("1")
@JsonTypeName(value = "choiceCard")
public class MultipleChoiceFileCard extends FileCardEntity {
    @Lob
    @Type(type = "org.hibernate.type.TextType")
    private String question;

    @Lob
    @Type(type = "org.hibernate.type.TextType")
    private String crib;
        ......

我使用下一个代码来反序列化信息:

ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD, Visibility.ANY);
final ObjectWriter typedWriter = mapper.writerWithType(mapper.getTypeFactory().constructCollectionType(List.class, classElement));
System.out.println(typedWriter.writeValueAsString(elements));

元素在哪里:List<?> elements

当我从服务器反序列化有关 TextFileCardEntity 的信息时,我得到:

[{"textCard":{"status":"ACTIVE","lastModified":1366293513200,"expirationDate":0.....

那没问题

当我尝试将有关 TextFileCardEntity 的信息序列化到服务器时,代码发送:

[{"FileCardEntity":{"status":"ACTIVE","lastModified":1366378327069,"shared":false,"orderID":0........

那不行,因为我需要反序列化信息中的语法相似 -->[{"textCard":{"status"....而不是[{"FileCardEntity":{"status"....

我能做些什么?

4

0 回答 0