1
我測試RuntimeTypeAdapterFactoryTest:GSON RuntimeTypeAdapterFactory - 空項目序列化導致空指針異常
這在最初的例子測試用例效果很好(testRuntimeTypeAdapter()):
但是,如果一個註冊類型爲空,我會在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。
謝謝