截至這個(gè)問題(1.1.0),我已經(jīng)獲得了最新版本的 Micronaut,并且看到添加了對 @JsonView jackson 注釋的支持。但是,當(dāng)我將它添加到我的控制器并在我的 application.yml 中啟用它時(shí),我沒有看到將注釋應(yīng)用于響應(yīng),我仍然收到完整的對象。注意:我也在使用 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);}}數(shù)據(jù):@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 { }}應(yīng)用程序.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 文件中的錯(cuò)誤位置,或者該功能是否沒有按預(yù)期工作,或者我缺少什么完全不同的東西?輸入贊賞!
1 回答

慕工程0101907
TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
上一個(gè)版本 application.yml 是正確的,但是您忘記將 Data 類標(biāo)記為 @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;
}
添加回答
舉報(bào)
0/150
提交
取消