【发布时间】:2013-08-23 14:19:19
【问题描述】:
我在 getter 方法中遇到了 nullPointer 的问题。
代码如下:
public String getTitle()
{
if(!title.isEmpty())
return title;
else
return "foo";
}
当我将其更改为普通吸气剂时,它可以完美运行。
public String getTitle()
{
return title;
}
诀窍在哪里?有反射技巧吗?
更新 问题不是空检查,而是执行getter而不调用它
堆栈跟踪
org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: java.util.ArrayList[0]- >si.mikropis.webkiosk.model.vao.wine.Wine["title"])
Caused by: java.lang.NullPointerException
at si.mikropis.webkiosk.model.vao.base.BaseModel.getTitle(BaseModel.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:483)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:418)
at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
... 32 more
【问题讨论】:
-
我会发布您的完整堆栈跟踪。
-
请添加您的 IDE(Netbeans、Android SDK,...)、包含的库(log4j、AndroidAnnotations,...)和使用的框架(例如 Hibernate、Struts,...)。
-
我正在使用球衣和杰克逊。
-
@extra90:由于 JSON 解析器必须遍历对象的所有成员,因此可能没有出路。我能想到的唯一解决方案是要么告诉杰克逊不要包含
null值(检查stackoverflow.com/questions/11757487/…),要么尝试包含自定义映射器(例如参见wiki.fasterxml.com/JacksonHowToCustomSerializers);如果您关心性能,无论如何我都会选择 gson(请参阅stackoverflow.com/questions/338586/a-better-java-json-library) -
@extra90 - 您有以下多种解决方案来处理空值。但是,我会调查 为什么 你有空值。显然没有设置“标题”,这是一个不同的问题/问题/主题