为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Micronaut 启用 JsonView

如何使用 Micronaut 启用 JsonView

慕尼黑的夜晚无繁华 2022-10-12 15:38:32
截至这个问题(1.1.0),我已经获得了最新版本的 Micronaut,并且看到添加了对 @JsonView jackson 注释的支持。但是,当我将它添加到我的控制器并在我的 application.yml 中启用它时,我没有看到将注释应用于响应,我仍然收到完整的对象。注意:我也在使用 Lombok 和我的 POJO,我不知道这是否会造成干扰。控制器:@Controller("/v1")public class Controller {private MongoClient client;public Controller(MongoClient mongoClient) {    this.client = mongoClient;}@Get("/ids")@Produces(MediaType.APPLICATION_JSON)@JsonView(Views.IdOnly.class)public Single<List<Grain>> getIdsByClientId(@QueryValue(value = "clientId") String clientId) {    return Flowable.fromPublisher(getCollection().find(Filters.eq("data.clientId", clientId))).toList();}private MongoCollection<Grain> getCollection() {    CodecRegistry grainRegistry = CodecRegistries.fromRegistries(MongoClients.getDefaultCodecRegistry(), CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));    return client            .getDatabase("db").withCodecRegistry(grainRegistry)            .getCollection("col", Data.class);}}数据:@Data@NoArgsConstructorpublic class Data {    @JsonSerialize(using = ToStringSerializer.class)    @JsonView(Views.IdOnly.class)    private ObjectId id;    private boolean active = true;    @Valid    @NotNull    private DataMeta dataMeta;    @Valid    @NotNull    private DataContent dataContent;}看法:public class Views {    public static class IdOnly {    }}应用程序.yml---micronaut:  application:    name: mojave-query-api---mongodb:  uri: "mongodb://${MONGO_USER:user}:${MONGO_PASSWORD:password}@${MONGO_HOST:localhost}:${MONGO_PORT:27017}/db?ssl=false&authSource=db"---jackson.json-view.enabled: trueapplication.yml(替代版本也不起作用)---micronaut:  application:    name: mojave-query-api---mongodb:  uri: "mongodb://${MONGO_USER:user}:${MONGO_PASSWORD:password}@${MONGO_HOST:localhost}:${MONGO_PORT:27017}/db?ssl=false&authSource=db"---jackson:  json-view:    enabled: true我不确定我的杰克逊行是否在 application.yml 文件中的错误位置,或者该功能是否没有按预期工作,或者我缺少什么完全不同的东西?输入赞赏!
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

上一个版本 application.yml 是正确的,但是您忘记将 Data 类标记为 @JsonView 类,因此工作版本是



@Data

@JsonView

@NoArgsConstructor

public class Data {


    @JsonSerialize(using = ToStringSerializer.class)

    @JsonView(Views.IdOnly.class)

    private ObjectId id;


    private boolean active = true;


    @Valid

    @NotNull

    private DataMeta dataMeta;


    @Valid

    @NotNull

    private DataContent dataContent;


}


查看完整回答
反对 回复 2022-10-12
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信