【发布时间】:2015-01-03 21:57:41
【问题描述】:
我正在测试 RuntimeTypeAdapterFactoryTest:
在原始示例测试用例 (testRuntimeTypeAdapter()) 中运行良好:
但如果注册类型为 null,我会在 RuntimeTypeAdapterFactory 中得到 NPE 异常。扩展上面的原始示例:
static class Wallet {
BillingInstrument payment;
}
Wallet wallet = new Wallet();
// wallet.payment = new Card("Jo", 123); // leave wallet.payment uninitialized.
gson.toJson(wallet); // throws NPE
如果我初始化 wallet.payment,那么序列化就可以正常工作。这是堆栈跟踪:
Exception in thread, java.lang.NullPointerException
at com.me.test.RuntimeTypeAdapterFactory$1.write(RuntimeTypeAdapterFactory.java:218)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:91)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:206)
at com.google.gson.Gson.toJson(Gson.java:595)
...
这里的要点:
有没有人遇到过这个问题并找到了解决方法?默认情况下,Gson 应该忽略序列化 null 值,所以不确定为什么在我的示例中它尝试序列化 wallet.payment。
谢谢
【问题讨论】:
标签: serialization gson