Java 从Micronaut rest端点在JSON中包含null和空属性

Java 从Micronaut rest端点在JSON中包含null和空属性,java,jackson,micronaut,micronaut-client,Java,Jackson,Micronaut,Micronaut Client,JSON序列化的默认配置是JsonInclude.Include.NON_EMPTY,它不包含空值或null值。但是,我需要包含空值和null值,所以我到目前为止做了什么- @Introspected @JsonInclude(ALWAYS) public class FindVendorViewModel extends PaginationViewModel { private List<VendorViewModel> vendors; public List

JSON序列化的默认配置是
JsonInclude.Include.NON_EMPTY
,它不包含空值或null值。但是,我需要包含空值和null值,所以我到目前为止做了什么-

@Introspected
@JsonInclude(ALWAYS)
public class FindVendorViewModel extends PaginationViewModel {
    private List<VendorViewModel> vendors;

    public List<VendorViewModel> getVendors() {
        return vendors;
    }

    public void setVendors(List<VendorViewModel> vendors) {
        this.vendors = vendors;
    }
}
当我添加@JsonInclude(总是)时,它不会在JSON响应中包含NULLEMPTY值,如下所示

{
    "pageSize": 10,
    "total": 28,
    "currentPage": 0,
    "totalPage": 3
}
如果我添加下面的代码,它确实包括
lastId
供应商的NULLEMPTY

jackson:
  serializationInclusion: ALWAYS

{
    "pageSize": 10,
    "total": 0,
    "currentPage": 0,
    "totalPage": 0,
    "lastId": null,
    "vendors": []
}
但是,它抛出一个异常,如下所示

11:15:25.640 [default-nioEventLoopGroup-1-5] ERROR i.m.d.registration.AutoRegistration - Error occurred during service registration with Consul: Request decode failed: json: unknown field "ID"
io.micronaut.http.client.exceptions.HttpClientResponseException: Request decode failed: json: unknown field "ID"
    at io.micronaut.http.client.netty.DefaultHttpClient$12.channelRead0(DefaultHttpClient.java:2140)
    at io.micronaut.http.client.netty.DefaultHttpClient$12.channelRead0(DefaultHttpClient.java:2055)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.micronaut.http.netty.stream.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:193)
    at io.micronaut.http.netty.stream.HttpStreamsClientHandler.channelRead(HttpStreamsClientHandler.java:183)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
控制器

@Controller("/api/${api.version:v1}/vendor")
public class ApiGatewayVendorController implements IVendorOperation{
 @Override
    public Maybe<?> get(VendorSearchCriteria searchCriteria) {
        return this.iVendorClient.get(searchCriteria);
    }
}
@Controller(“/api/${api.version:v1}/vendor”)
公共类ApiGatewayVendorController实现IVendorroperation{
@凌驾
公众可能获得(供应商搜索标准搜索标准){
返回此.iVendorClient.get(搜索条件);
}
}

我的问题是领事发现

consul:
  client:
    defaultZone: ${CONSUL_HOST:localhost}:${CONSUL_PORT:8500}
    registration:
      check:
        enabled: false
      enabled: true
添加下面的代码是解决方法,但是,这是一个bug

consul:
  client:
    defaultZone: ${CONSUL_HOST:localhost}:${CONSUL_PORT:8500}
    registration:
      check:
        enabled: false
      enabled: true
registration:
          check:
            enabled: false