Java 仅使用修改的字段序列化POJO?
我有一堆POJO要序列化/反序列化为JSON 然而,我只是选择性地阅读了卡桑德拉的一些字段 因此,当我将对象序列化为JSON时,我只需要从数据库读取的对象 因此,所有的setter都需要编写代码来跟踪该成员是否已被变异/定义 这样,当我去序列化时,只包括修改过的字段 我在这个模式中有几十个字段,所以我不想直接编写setter 有没有任何POJO框架可以为我做到这一点Java 仅使用修改的字段序列化POJO?,java,serialization,pojo,Java,Serialization,Pojo,我有一堆POJO要序列化/反序列化为JSON 然而,我只是选择性地阅读了卡桑德拉的一些字段 因此,当我将对象序列化为JSON时,我只需要从数据库读取的对象 因此,所有的setter都需要编写代码来跟踪该成员是否已被变异/定义 这样,当我去序列化时,只包括修改过的字段 我在这个模式中有几十个字段,所以我不想直接编写setter 有没有任何POJO框架可以为我做到这一点 Java中没有“未定义”,因此默认值为“null”。不幸的是…null在这种情况下是您的朋友 如果我理解正确,并且“未修改”字段在
Java中没有“未定义”,因此默认值为“null”。不幸的是…
null
在这种情况下是您的朋友
如果我理解正确,并且“未修改”字段在序列化时将为空,并且假设您正在使用,只需在类的顶部添加以下注释:
@JsonInclude(Include.NON_NULL) //alternatively @JsonInclude(Include.NON_EMPTY)
class Foo {
这将从序列化对象中排除任何null(或者空)值
如果我没有正确理解您,并且“未修改”字段将不会为null或空,那么这将有点棘手,但不会太多。让我知道,我会更新一些提示
(注:如果您查看该链接,您将看到Jackson还有许多其他方便的注释)非常好的反馈。我自己也想出了同样的解决方案,所以我想伟大的人都有相同的想法!我的更改是使用整数而不是整数。。这样,当我调用getValue()之类的函数时,我的代码会失败,因为没有发送值。我不喜欢必须抛出一个NPE,但这将是目前的工作。@burtonator嗯,我想他们会的:)当我在这里发布问题时,这种情况经常发生在我身上。既然你是新来的:如果我的回答解决了你的问题,请接受它。我注意到你以前从来没有这样做过,你应该这样做——它让未来的用户知道这个解决方案是有效的,并且它给了你一些声誉积分!谢谢完成。“接受”用户界面不是非常清晰。我可能会回到我以前的帖子。