如何使用 Micronaut 启用 JsonView

截至这个问题(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

@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;


}

看法:


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: true

application.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 文件中的错误位置,或者该功能是否没有按预期工作,或者我缺少什么完全不同的东西?输入赞赏!


慕尼黑的夜晚无繁华
浏览 90回答 1
1回答

慕工程0101907

上一个版本 application.yml 是正确的,但是您忘记将 Data 类标记为 @JsonView 类,因此工作版本是@Data@JsonView@NoArgsConstructorpublic class Data {&nbsp; &nbsp; @JsonSerialize(using = ToStringSerializer.class)&nbsp; &nbsp; @JsonView(Views.IdOnly.class)&nbsp; &nbsp; private ObjectId id;&nbsp; &nbsp; private boolean active = true;&nbsp; &nbsp; @Valid&nbsp; &nbsp; @NotNull&nbsp; &nbsp; private DataMeta dataMeta;&nbsp; &nbsp; @Valid&nbsp; &nbsp; @NotNull&nbsp; &nbsp; private DataContent dataContent;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java