在执行Json时,vertx中的encodePrettily(object)也包含空值

klr1opcd  于 2023-10-21  发布在  其他
关注(0)|答案(3)|浏览(137)

在执行Json时,也会包含vertx中的encodePrettily(object)空值。
因此需要知道如何配置它以避免响应空值。

bogh5gae

bogh5gae1#

io.vertx.core.json使用Jacksonfasterxml实现,因此vertx内部使用jackson fasterxml库。因此,除非明确要求,否则不需要在vertx中使用任何其他json库。
因此,为了避免相同情况,我们可以使用以下方法

Json.prettyMapper.setSerializationInclusion(Include.NON_NULL);
q5lcpyga

q5lcpyga2#

您也可以在模型类的顶部添加@JsonInclude(JsonInclude.Include.NON_NULL)

xtfmy6hx

xtfmy6hx3#

Json.prettyMapper已弃用。您可以手动删除空值。一个lambda:

import io.vertx.core.json.Json;
import io.vertx.core.json.JsonObject;

MyCustomDtoClass body = new MyCustomDtoClass(...)

JsonObject jsonBody = new JsonObject(Json.encode(body))
    .stream()
    .filter(e -> e.getValue() != null)
    .collect(
        Collectors.collectingAndThen(
            Collectors.toMap(Entry::getKey, Entry::getValue),
            JsonObject::new
        )
    );

相关问题