spring - JsonInclude 如何仅在未分配时才忽略默认值布尔值
问题描述
当我使用 Include.NON_NULL 时,错误响应是错误的,如果我使用 Include.NON_DEFAULT,状态为 200 的响应是错误的
这就是我要找的:
状态:200 OK
{
"adultMovie": false,
"backdropPathMovie": "/2U3hyiVzzhYzS6j9fcdVW4mO4Uk.jpg",
"originalLanguageMovie": "en",
"originalTitleMovie": "Fire"
}
状态:400
{
"errors": [
{
"typeId": "FIELD_VALIDATION_ERRORS",
"field": "idMovie",
"message": "Invalid value of `fff` provided"
}
]
}
这是我迄今为止尝试过的: 我的模型:
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Movie implements Serializable {
private static final long serialVersionUID = -3515253168981789136L;
private boolean adultMovie;
private String backdropPathMovie;
private String originalLanguageMovie;
private String originalTitleMovie;
private Set<Error> errors;
}
状态:200 OK
{
"adultMovie": false,
"backdropPathMovie": "/2U3hyiVzzhYzS6j9fcdVW4mO4Uk.jpg",
"originalLanguageMovie": "en",
"originalTitleMovie": "Fire"
}
状态:400。验证错误
{
"adultMovie": false, // It shouldn't show up
"errors": [
{
"typeId": "FIELD_VALIDATION_ERRORS",
"field": "idMovie",
"message": "Invalid value of `513f` provided"
}
]
}
如果我尝试:
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public class Movie implements Serializable {
状态:200 OK
{
"backdropPathMovie": "/2U3hyiVzzhYzS6j9fcdVW4mO4Uk.jpg",
"originalLanguageMovie": "en",
"originalTitleMovie": "Fire"
} // Here should show up "adultMovie": false, as this field is set as false.
状态:400。验证错误
{
"errors": [
{
"typeId": "FIELD_VALIDATION_ERRORS",
"field": "idMovie",
"message": "Invalid value of `fff` provided"
}
]
}
解决方案
相反,您可以使用布尔值,如下所示。布尔值的值为真或假,如果未设置,则默认值为假。因此,使用 @JsonInclude(JsonInclude.Include.NON_DEFAULT) 即使您手动设置了 false 值,它也会假定它是默认值,并且即使您需要此值作为响应,也会忽略此值。另一方面,布尔值具有三个值,例如 true、false 和 null。因此,如果您将其设置为 false,它也会在响应中考虑。仅当您设置为 null 时,它才会包含在响应中。
私人布尔成人电影;
推荐阅读
- google-maps - 我对使用 Direction API 获得的航点顺序感到困惑
- c# - 为什么有人应该禁用编译器优化
- javascript - React Native Redux 导致整个页面在调用函数时呈现
- mysql - 如何使用存储在 mysql 中的任意数据特征训练 DNN 分类模型?
- c++ - 试图在不计算空格的情况下找到单词的数量
- sql - Oracle SQL比较同一张表的行
- javascript - 数据表即使填满数据仍然显示无数据
- intel - 英特尔 SGX 服务提供商
- laravel - Eloquent hasManyThrough 也获取中间表信息
- sas - 如何在sas中读取dbf文件?