当getter具有null值而不是返回java.lang.NullPointerException时,如何返回null值

当getter具有null值而不是返回java.lang.NullPointerException时,如何返回null值,java,postgresql,spring-boot,spring-rest,Java,Postgresql,Spring Boot,Spring Rest,我查询数据库并将其映射到类 MyDataClass myDataClass = myDataDao.findMyDataByAccountNumber(accountNumber); 我把它映射到像这样的其他类 MyOtherDataclass myOtherDataClass = new MyOtherDataClass(); myOtherDataClass.setBirthDate(myDataClass.getBirthDate().toString); { AccountNumbe

我查询数据库并将其映射到类

MyDataClass myDataClass = myDataDao.findMyDataByAccountNumber(accountNumber);
我把它映射到像这样的其他类

MyOtherDataclass myOtherDataClass = new MyOtherDataClass();
myOtherDataClass.setBirthDate(myDataClass.getBirthDate().toString);
{
AccountNumber: "12313",
BlaBla: "blabla",
BirthDate: null,
}
我知道
myDataClass.getBirthDate()
为空,因为我数据库中的
birthdate
值为空。 若我在数据库中的
birthdate
中插入值,那个么一切正常。但是,如果它没有值,我希望在json中将其设置为null,而不是抛出
java.lang.NullPointerException:null

我希望json的结果是这样的

MyOtherDataclass myOtherDataClass = new MyOtherDataClass();
myOtherDataClass.setBirthDate(myDataClass.getBirthDate().toString);
{
AccountNumber: "12313",
BlaBla: "blabla",
BirthDate: null,
}
===========================================================================

找到了问题。

我在myOtherDataClass.getBirthDate().toString()上使用了
.toString()
,因此它抛出空指针。因为
myDataClass
中的birthDate为空。对不起,这是我的错

解决使用

myOtherDataClass.setBirthDate(myDataClass.getBirthDate() != null ? myDataClass.getBirthDate().toString() : null);

我们对您的类没有任何可见性(
myDataClass
myOtherDataClass
),因此很难确定getter抛出错误的原因。不过,我在这里只是猜测,您可能只是在寻找一个快速的一行程序来处理空值,一个答案是:

myOtherDataClass.setName((myDataClass.getName()!=null)?myDataClass.getName():“somethingelse”)

这可以用于呈现“somethingelse”的任何内容,包括null(我也不知道您是如何生成json的,所以我不知道您是如何处理null的)

如果您想看到一个完整的示例,这里有一个是带有两个实例(一个命名,一个未命名)的伪DAO


这里有一个链接

什么在抛出空指针?干将?使用stacktrace PLS发布日志写入处理器以处理每个值的null。@ThomasAndolf是的,我已经编辑了日志。这里真正的问题是为什么
myOtherDataClass
将日期存储为字符串?不要那样做。尽可能使用原始类型,仅在需要打印或显示时转换。如果您发布stacktrace.thx作为答案,所有这些都可以在一秒钟内指出,但我需要设置100个字段。我真的应该把三元运算符放在我必须设置的100域中吗?别担心这个问题。我发现我在myDataClass.getBirthDate()上使用了“.toString()”。所以它抛出空指针。因为数据库中的生日是空的。对不起,那是我的愚蠢。谢谢你的回答。我使用三元运算符来验证它,然后执行.toString()。