当前位置: 首页 > 面试题库 >

仅在序列化期间使用@JsonIgnore,但不反序列化

林鸿彩
2023-03-14
问题内容

我有一个发送到服务器或从服务器发送的用户对象。发送用户对象时,我不想将哈希密码发送给客户端。因此,我添加@JsonIgnore了password属性,但是这也阻止了将其反序列化为密码,这使得在没有密码的情况下很难注册用户。

我怎样才能只@JsonIgnore应用序列化而不是反序列化?我使用的是Spring JSONView,因此对的控制不多ObjectMapper

我尝试过的事情:

  1. 添加@JsonIgnore到属性
  2. @JsonIgnore仅添加getter方法

问题答案:

确切的操作方法取决于您使用的Jackson版本。围绕 1.9 版进行了更改,在此之前,您可以通过添加@JsonIgnore到getter中来实现。

您尝试过的:

仅在getter方法上添加@JsonIgnore

执行此操作, 然后@JsonPropertyJSON“密码”字段名称的特定注释添加到对象密码的setter方法中。

较新版本的Jackson已为添加READ_ONLYWRITE_ONLY注释参数JsonProperty。因此,您还可以执行以下操作:

@JsonProperty(access = Access.WRITE_ONLY)
private String password;

可以在这里找到文档。



 类似资料:
  • 问题内容: 我有一个发送到服务器或从服务器发送的用户对象。发送用户对象时,我不想将哈希密码发送给客户端。因此,我添加了password属性,但这也阻止了将其反序列化为密码,这使得在没有密码的情况下很难注册用户。 我怎样才能只应用序列化而不是反序列化?我使用的是Spring JSONView,因此对的控制不多。 我尝试过的事情: 添加到属性 仅添加getter方法 问题答案: 确切的操作方法取决于你

  • 问题内容: 我有一个发送到服务器或从服务器发送的用户对象。发送用户对象时,我不想将哈希密码发送给客户端。因此,我添加了password属性,但这也阻止了将其反序列化为密码,这使得在没有密码的情况下很难注册用户。 我怎样才能只应用序列化而不是反序列化?我使用的是Spring JSONView,因此对的控制不多。 我尝试过的事情: 添加到属性 仅添加getter方法 问题答案: 确切的操作方法取决于你

  • 我有一个用户对象,它被发送到服务器和从服务器发送。当我发出user对象时,我不想将散列密码发送给客户端。因此,我在password属性中添加了,但这也阻止了它反序列化为密码,这使得用户在没有密码时很难注册。 如何才能只让应用于序列化而不应用于反序列化?我使用的是Spring JSONView,所以我对没有太多的控制权。 将添加到属性 仅在getter方法上添加

  • 在我们的项目(springMVC)Rest API项目中,我希望只对请求和响应使用一个模型(以避免添加大量代码将字段从一个对象复制到另一个对象) 我想用昂首阔步来处理所有的医生,但我遇到了一个小问题。例如,假设我有一个模型用户 和一个简单的控制器 现在,我希望swagger在反序列化时隐藏属性密码,而不是序列化(因此,在输入时显示它,但在输出时显示它),在Id字段中则相反。 我尝试使用@jsoni

  • 问题内容: 我有一个对象,即时通讯读取和写入,并从和。我不断收到Java期望的错误,但发现了另一个。 在我的课堂上,我已经实现并拥有一个我认为足够的领域。 我是Java序列化的新手。我在这里想念什么? 编辑 如果有关系,我实际上是在尝试读写 这是完整的痕迹: 问题答案: 您正在读取文件吗?在这种情况下,是否立即添加serialVersionUID无关紧要,它不同于文件中存储的那个,并且会创建异常。

  • 问题内容: 我如何才能序列化一个特定的属性,但又防止其反序列化回POCO?是否可以使用属性装饰特定属性? 基本上,我正在寻找一个与ShouldSerialize *方法等效的反序列化方法。 我知道我可以编写一个自定义转换器,但是这样做似乎有点过头了。 编辑: 这里还有一些背景。这背后的原因是我的课看起来像: 我需要请求的属性,但是我不希望它反序列化并触发设置程序逻辑。 问题答案: 最简单的方法是将