【问题标题】:@JsonIgnore field in frontend UI and include it in Jsonb json serialization to store in Postgres前端 UI 中的 @JsonIgnore 字段并将其包含在 Jsonb json 序列化中以存储在 Postgres 中
【发布时间】:2017-08-23 19:07:49
【问题描述】:

我需要在前端 UI 中忽略一个字段,而相同的字段将在后端计算并需要作为 Jsonb 对象存储在 Postgres DB 中。除了将值对象转换为更新的值对象之外,Jackon 中是否有针对此用例的任何功能。

Test.java

public class Test {

    private Integer score;

    private Date dateValidated = null;

    private Boolean consent = false;

    private Date dateConsented;

    public void setConsent(Boolean consent) {
        this.consent = consent;
        this.dateConsented = consent ? new Date() : null;
    }

}

根据同意,将设置 dateConsented,我不希望在调用我的服务时设置它。我可以为此使用@JsonIgnore

问题

我会将此测试作为 json 对象存储在 postgres (Jsonb) 中。因此,如果我使用 @JsonIgnore dateConsented 也将在 DB 中被忽略。我不希望这种情况发生。对此有何建议/解决方案?

【问题讨论】:

  • 显示你的 java 类。没有代码你的想法不清楚(就我个人而言 - 完全不清楚)
  • 不能在 UI 中不显示该字段吗?还是在发送 JSON 之前将其设置为 null?

标签: java postgresql jackson jax-rs jsonb


【解决方案1】:

只需为自己创建一个资源类,并将该类转换为它。最后把这个资源类返回给前端UI。看看spring的ConverterFactory吧。

【讨论】:

  • 我已经在我的问题中提到了这个选项。我问过这个问题是为了检查杰克逊或任何其他框架是否有任何解决方案。
  • 但在这种情况下这是正常的设计模式。因为如果有一天您决定现在像日期一样显示分数字段,您只需更改资源类即可处理此问题。多亏了这个解决方案,除了您的 UI 之外,您的程序中没有任何地方可以影响。
猜你喜欢
  • 2013-06-07
  • 1970-01-01
  • 2016-02-07
  • 2014-10-04
  • 2022-11-09
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 2011-02-01
相关资源
最近更新 更多