Spring MVC Jackson序列化抛出了NullPointer异常

时间:2014-06-26 15:27:21

标签: java json spring jackson

注意:我尝试了几乎所有可用的解决方案,但仍然无法使其正常工作。

我在我的应用程序中使用Spring 4。我在我的pom中添加了jackson libs,如下所示:

<dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.2.1</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.2.1</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.2.1</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-asl</artifactId>
                <version>1.9.9</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>1.9.9</version>
            </dependency>

spring-config.xml看起来像这样(只是其中的一部分):

<mvc:annotation-driven/>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="order" value="1"/>
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes" value="application/json"/>
                </bean>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes" value="text/plain;charset=UTF-8"/>
                </bean>
            </list>
        </property>
    </bean>

实体(省略了吸气剂和制定者)

@Entity(name="Employee")
public class Employee {

private String name;
private List<Address> addressList;

}
}

我在我的休息控制器中使用@ResponseBody。我正在创建一个只有名字的员工(没有提供地址)。在创建之后,我试图将相同的对象返回到UI。但在这种情况下,地址列表将为NULL。由于这个原因,我得到了NullPointer Exception。

我尝试使用@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)@JsonInclude(JsonInclude.Include.NON_NULL)注释地址字段。 但在这两种情况下,我也得到了同样的例外。

我尝试了不同的方法。如果我创建一个自定义转换器并在控制器中使用它,它工作正常。但我不想在所有控制器方法中编写该代码。

任何解决方案?

1 个答案:

答案 0 :(得分:0)

最后,我决定在实体中使用ArrayList实例化集合,现在工作正常。没有其他方法奏效。