【问题标题】:Generate custom setter lombok or intelliJ生成自定义设置器 lombok 或 intelliJ
【发布时间】:2018-09-13 21:28:25
【问题描述】:

我有一个像这样的 Dto 类:

@Setter @Getter
public class UserDTO {

    private String firstName;

    private String lastName;

}

当没有字段发送给杰克逊时,我在某处读到,我们可以像这样得到改变:

public boolean isModifiedFirstName = false;

public void setFirstName(String firstName) {
    this.isModifiedFirstName = true;
    this.firstName = firstName;
}

如何使用 lombok 生成这样的代码? 甚至 intelliJ 模板不生成 isModified 布尔字段

对于我的问题,如何将 json 字段发送给 jackson,如下所示:

{
"firstName":null,
"lastname":"someName"
}

不同:

{
"lastName" : "someName"
}

我正在搜索如何获取 jackson null 与未定义字段,发现在 setter 方法中可能会有所不同。

现在我需要为我的 DTO 自定义设置器来获取 null 与未定义的 json 字段。 谢谢

【问题讨论】:

  • 嗨 Mohsen,欢迎来到 SO。为了得到您问题的答案,您能否更详细地解释您的问题?目前还不清楚杰克逊是如何参与所有这一切的。谢谢
  • @PimHazebroek 嘿,感谢您的回复,即时更新问题

标签: intellij-idea jackson lombok


【解决方案1】:

Lombok 没有生成“isChanged”样式字段的选项。你必须把它写成长格式。

我不明白你为什么在这里需要它;如果 JSON 输入具有 null 值,那么它在 java 端也会以 null 结束,这就是你知道的。

【讨论】:

  • 因为我需要我的 json 为空或不发送给我
【解决方案2】:

您可以将属性初始化为 null 以外的其他值:

@Setter @Getter
public class UserDTO {

    private String firstName = "empty";

    private String lastName = "empty";

}

您可以选择一个不太可能作为输入接收的值。那么您将知道该属性是否在反序列化期间设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2019-10-17
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    相关资源
    最近更新 更多