Long类型的属性被@JsonFormat(shape = JsonFormat.Shape.STRING)注解修饰,判断不能为空使用@NotBlank还是@NotNull校验
时间: 2023-12-04 15:40:44 浏览: 110
根据提供的信息,@NotBlank和@NotNull注解都不能用于Long类型的属性。@NotBlank注解只能用于字符串类型的属性,而@NotNull注解只能用于对象类型的属性。对于Long类型的属性,可以使用@NotNull和@Min注解来判断不能为空。@Min注解可以限制属性的最小值,因此可以将value设置为1来限制Long类型的属性不为空。
示例代码如下:
```java
@Data
public class ClassGrade {
@NotNull(message = "id不能为空")
@Min(value = 1, message = "id必须为大于0")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@NotNull(message = "props不能为空")
@Size(min = 1, message = "至少要有一个属性")
@Valid
private List<Student> students;
}
```
相关问题
java中@JsonFormat(shape = JsonFormat.Shape.STRING)
在Java中,@JsonFormat(shape = JsonFormat.Shape.STRING)是一个注解,用于在JSON序列化时指定字段的格式或类型。具体来说,shape属性表示序列化后的一种类型,通过将字段转换为字符串格式来解决一些问题,比如前端对长整型数据的精度截断问题。
在使用@JsonFormat(shape = JsonFormat.Shape.STRING)注解时,需要将该注解应用到相应的字段上,例如:@JsonFormat(shape = JsonFormat.Shape.STRING) private Long productId;。这样,在进行JSON序列化时,该字段的值将被转换为字符串格式,并正确返回给前端。
这个注解在分页查询时特别有用,因为服务端会将返回的结果集进行JSON序列化,转换为JSON格式的数据。如果返回的字段是一个长整型数据,通过使用@JsonFormat(shape = JsonFormat.Shape.STRING)注解,可以确保该字段的值在返回给前端时不会出现精度截断的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [记一次返回前端数据id跟数据库不一致问题@JsonFormat(shape = JsonFormat.Shape.STRING)](https://blog.csdn.net/weixin_48950399/article/details/130102667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
@JsonFormat注解的正确使用
@JsonFormat注解是Jackson库中的一个注解,用于指定Java对象序列化为JSON字符串时的格式。它可以用于日期、时间、数字等类型的格式化。下面是@JsonFormat注解的正确使用方法:
1. 对于日期类型,可以使用以下方式进行格式化:
```java
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date date;
```
其中,pattern属性指定了日期的格式,timezone属性指定了时区。
2. 对于数字类型,可以使用以下方式进行格式化:
```java
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long number;
```
其中,shape属性指定了数字的格式,这里使用了STRING类型,表示将数字转换为字符串。
3. 对于枚举类型,可以使用以下方式进行格式化:
```java
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum Gender {
MALE("男"),
FEMALE("女");
private String name;
Gender(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
```
其中,shape属性指定了枚举的格式,这里使用了OBJECT类型,表示将枚举转换为对象。