@JsonInclude(value = JsonInclude.Include.NON_NULL)
时间: 2024-05-28 11:13:30 浏览: 131
@JsonInclude(value = JsonInclude.Include.NON_NULL) 是 Jackson 库提供的注解,用于指示在序列化 Java 对象为 JSON 格式的过程中,仅包含非空的属性值。如果一个属性的值为 null,那么在序列化过程中该属性将被忽略掉,不会被包含在最终生成的 JSON 中。这个注解可以用在类级别或属性级别上。在类级别上使用 @JsonInclude 注解时,它将适用于整个类的所有属性。在属性级别上使用 @JsonInclude 注解时,它将仅应用于该属性。
相关问题
package com.design.common.utils; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import java.io.Serializable; @JsonInclude(value = Include.NON_NULL) public class ReturnData implements Serializable { private Boolean success; private Object data; private String errorCode; private String errorMessage; // 0 silent; 1 message.warn; 2 message.error; 4.notification; 9 page private Integer showType; private String traceId; private String host; public ReturnData() { } public ReturnData(Boolean success) { this.success = success; } public static ReturnData success() { return new ReturnData(true); } public static ReturnData error() { return new ReturnData(false); } public Boolean getSuccess() { return success; } public ReturnData setSuccess(Boolean success) { this.success = success; return this; } public Object getData() { return data; } public ReturnData data(Object data) { this.data = data; return this; } public String getErrorCode() { return errorCode; } public ReturnData errorCode(String errorCode) { this.errorCode = errorCode; return this; } public String getErrorMessage() { return errorMessage; } public ReturnData errorMessage(String errorMessage) { this.errorMessage = errorMessage; return this; } public Integer getShowType() { return showType; } public ReturnData showType(Integer showType) { this.showType = showType; return this; } public String getTraceId() { return traceId; } public ReturnData traceId(String traceId) { this.traceId = traceId; return this; } public String getHost() { return host; } public ReturnData host(String host) { this.host = host; return this; } }
这段代码是一个示例的 ReturnData 类的实现,它包含了以下属性和方法:
- 属性:
- success: 表示操作是否成功的布尔值。
- data: 表示返回的数据对象。
- errorCode: 表示错误代码。
- errorMessage: 表示错误消息。
- showType: 表示错误展示类型的整数值。
- traceId: 表示追踪ID。
- host: 表示主机名。
- 构造函数:
- ReturnData(): 默认构造函数。
- ReturnData(Boolean success): 接受一个布尔参数的构造函数。
- 静态方法:
- success(): 返回一个成功的 ReturnData 实例。
- error(): 返回一个失败的 ReturnData 实例。
- getter 和 setter 方法:用于访问和设置属性值。
这个类使用了 Jackson 库的注解,用于指定在序列化时包含非空字段。它还实现了 Serializable 接口,以支持对象的序列化操作。
请注意,这只是一个示例代码,你可以根据自己的需求进行修改和扩展。
@Bean public ObjectMapper objectMapper(@Value("Asia/Shanghai") TimeZone timeZone) { // 序列换成json时,将所有的long变成string SimpleModule simpleModule = new SimpleModule(); // simpleModule.addSerializer(Long.class, ToStringSerializer.instance); // simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); // 日期序列化设置 JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(Date.class, new DateSerializer(true, new SimpleDateFormat())); javaTimeModule.addDeserializer(Date.class, new DateDeserializers.DateDeserializer()); return new ObjectMapper() .setTimeZone(timeZone) .setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL) .registerModule(simpleModule) .registerModule(javaTimeModule); }
这是一个Spring Boot中用于创建ObjectMapper对象的@Bean方法。ObjectMapper是一个Jackson库中的核心类,用于将Java对象序列化为JSON格式或反序列化JSON格式为Java对象。在这个@Bean方法中,我们首先创建了一个SimpleModule对象,用于将所有的long类型序列化为字符串类型。接着,创建了一个JavaTimeModule对象,用于处理Java中日期时间类型的序列化和反序列化。我们使用addSerializer和addDeserializer方法将Date类型注册为一个可序列化和可反序列化的类型,并使用DateSerializer和DateDeserializer类来处理该类型的序列化和反序列化。最后,我们将SimpleModule和JavaTimeModule注册到ObjectMapper中,并设置了一些默认属性,如时区和JSON属性包含规则等。最终,我们返回了一个ObjectMapper对象,该对象可以在Spring容器中被注入到其他组件中使用。
阅读全文