@JsonProperty(access = JsonProperty.Access.READ_ONLY) 是一个用于定义 JSON 属性访问权限的注解,在 Java 开发中常用于定义实体类的属性。该注解用于指定属性在序列化和反序列化过程中的访问权限。
@JsonProperty(access = JsonProperty.Access.READ_ONLY) 用于标记一个属性为只读,意味着在序列化过程中可以将该属性的值包含在生成的 JSON 中,但在反序列化过程中,该属性的值将被忽略。
这个注解可以用于控制 JSON 序列化和反序列化操作中的字段访问权限,例如,某些字段可能希望只在序列化时出现在 JSON 中,而不希望在反序列化时被赋值,这时可以使用 @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) 注解。
举个eg:
假设前端传递的数据为
{
"id":"d27adff74ee511ee8e5f005056be6831",
"sprint":"",
"demandType":"2",
"planType":"N",
"attachment":",896879aa4f78f5531235e474c0ea1ad1",
"sysUploadFilesList":[
{
"id":"896879aa4f78f5531235e474c0ea1ad1",
"createBy":"421",
"createTime":"2023-09-09T08:05:52.925+00:00",
"delFlag":"N",
"sourceFileName":"Snipaste_2023-09-09_14-17-17.png",
"targetFileName":"matter/Snipaste_2023-09-09_14-17-17_1694246752723.png",
"previewUrl":"http://192.168.6.248:9000/eis/matter/Snipaste_2023-09-09_14-17-17_1694246752723.png"
}
]
}
假设我想对这个虚拟的sysUploadFilesList上传的路径,不进行序列化,我们改怎么办?
直接在对应的entity 属性上加上@JsonProperty的注解
比如:
//附件的列表
@TableField(exist = false)
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private List<SysUploadFilesRecords> sysUploadFilesList;
这里的JsonProperty.Access有4个参数:
JsonProperty.Access.AUTO(默认):自动确定此属性的读取和/或写入访问权限。
JsonProperty.Access.READ_ONLY:只读取此属性的值,不会写入。
JsonProperty.Access.WRITE_ONLY:只写入此属性的值,不会读取。
JsonProperty.Access.READ_WRITE:既读取也写入此属性的值。
大家看着取值即可