需要在使用 jackson json 提供程序的 weblogic 12c 中返回 null 作为响应

问题描述 投票:0回答:1

在我的 weblogic 11g 到 12c 迁移的 java 应用程序中,我的 API 端点是

\`@GET
@Path("/scheme/id/{Id}")
@Produces(MediaType.APPLICATION_JSON)
public List\<Scheme\> getSchemesById(@PathParam("Id") String id){
List\<Scheme\> list =  new List\<Scheme\>;

    return list;

}
\`

如果列表为空,则返回 {}。该列表有一些返回 null 的子对象,这些 null 和空对象通过 ObjectMapper 映射器属性从 json 响应中删除(查看下面的属性)。

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.setSerializationInclusion(JsonIninclude.Include.NON_EMPTY);

以便回应

\`{
"abc" : null, //null object
"xyz" : {}    // empty object

    .
    .

}\`

变成{}。但我不需要获取此 {},而是需要 null 作为此父对象列表的响应。指导我获得所需的答复。此应用程序同时支持球衣 1 和球衣 2。谢谢。

我尝试使用资源上下文 ObjectMapper 属性,例如

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);  
mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);

还包括

@JsonInclude(JsonInclude.Include.ALWAYS)
用于列表对象 getter 方法。

我还尝试使用自定义的 null 序列化程序来检查 null 并通过 jsongenerator 写入 null ,如下所示

if (isFullOfNulls(value)) {     generator.writeStartObject();     generator.writeString("null");     generator.writeEndObject(); }
isFullOfNulls() - 检查所有属性和子属性是否为 null。

java oracle jackson jax-rs weblogic12c
1个回答
0
投票

当列表为空时,您可以直接返回 null。 前任:

return list.isEmpty() ? null: list;

© www.soinside.com 2019 - 2024. All rights reserved.