JsonTypeInfo未在响应中显示

时间:2019-05-24 12:49:37

标签: java json spring jackson jackson2

我有一个抽象类

    @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "_type", visible = true, include = As.EXISTING_PROPERTY)
    @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    @JsonSubTypes({
       @Type(value = B.class, name = "B"),
       ...
    })
    public abstract class A {
      ...
    }

和子类之一

@DiscriminatorValue("B")
@JsonTypeName("B")
public class B extends A {
  ...
}

当我要创建一个实体时,需要指定“ _type”属性。哪个很好。但是,当我需要A-s列表时,无法获取JSON响应中指定的属性“ _type”。

我尝试了多种解决方案,但找不到正确的方法。 我尝试使用事务性添加“ _type”属性,并尝试添加"include = JsonTypeInfo.As.PROPERTY"。但是仍然没有。

当然,对于所有事情,我只有一个A类控制器。

有人可以告诉我如何在响应和其他响应中获得“ _type”吗?

tnx

1 个答案:

答案 0 :(得分:0)

它看起来像个错误,虽然不知道在哪里。无论如何,我今天已经找到了解决方法。

@GetMapping
public Page<MyObject> findAll(Pageable pageable) {
   Page<MyObject> page = ...;
   return new PageImpl<>(page.getContent(), pageable, page.getTotalElements()) {};
}

请注意,此处将返回扩展了PageImpl的匿名类的新实例(不是PageImpl的新实例),以防止类型擦除。