在我的 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。
当列表为空时,您可以直接返回 null。 前任:
return list.isEmpty() ? null: list;