小编Sve*_*ach的帖子

Jackson&JSONAnySetter:序列化/反序列化期间的NullPointer异常

我在使用Jackson 1.9.13(以及Jackson 2.5.0)进行序列化/反序列化时遇到了问题,并且现在已经打了几天而没有任何成功.

我的目标是使用@JsonAnyGetter和@JsonAnySetter,我想动态计算是否应该将对象写入输出.我有一个JSON定义,我使用ObjectMapper序列化(并检查是否应该包含Object),然后我将对象转换回字符串.

我正在使用"HidableSerializer",它在序列化期间工作正常,但在将对象转换回字符串时则不行.

没有@JsonAnySetter/-getter "HidableSerializer",每个方面都可以正常工作,但不能同时工作.

为什么这不起作用?我该如何解决这个问题?欢迎更好的方法!

堆栈跟踪如下所示:

堆栈跟踪

org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: ch.hasselba.Test["[anySetter]"])
null
    at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:218)
    at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:183)
    at org.codehaus.jackson.map.ser.std.SerializerBase.wrapAndThrow(SerializerBase.java:140)
    at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:158)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
at ch.hasselba.HidableSerializer.serialize(HidableSerializer.java:29)
    at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
    at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
    at org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:2575)
    at org.codehaus.jackson.map.ObjectMapper.writeValueAsString(ObjectMapper.java:2097)
    at ch.hasselba.Demo.main(Demo.java:54)
Caused by: java.lang.NullPointerException
    at org.codehaus.jackson.map.ser.std.MapSerializer.serializeFields(MapSerializer.java:243)
    at org.codehaus.jackson.map.ser.AnyGetterWriter.getAndSerialize(AnyGetterWriter.java:41)
    at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:154)
    ... 7 more
Run Code Online (Sandbox Code Playgroud)

演示代码

package ch.hasselba;

import org.codehaus.jackson.Version;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.codehaus.jackson.map.introspect.BasicBeanDescription;
import org.codehaus.jackson.map.module.SimpleModule;
import org.codehaus.jackson.map.ser.BeanSerializerModifier;

public class Demo {

    public static void main(String[] args) { …
Run Code Online (Sandbox Code Playgroud)

java serialization json jackson deserialization

12
推荐指数
1
解决办法
1280
查看次数

标签 统计

deserialization ×1

jackson ×1

java ×1

json ×1

serialization ×1