我正在尝试使用自定义序列化程序通过 jackson 序列化一些可以为空的字段。在线阅读似乎杰克逊应该写一个“空”字符串,如果我想要不同的输出,我应该从它的官方 github 中遵循这个例子
问题是我得到了 NullPointerException 而不是“空”字符串。JsonGenerator.writeNumberField 和 JsonGenerator.writeStringField 都会发生这种情况。
要写一个空字符串,我应该管理异常,还是我遗漏了什么?
这是堆栈跟踪:
com.fasterxml.jackson.databind.JsonMappingException: [no message for java.lang.NullPointerException]
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._wrapAsIOE(DefaultSerializerProvider.java:509) ~[jackson-databind-2.9.6.jar:2.9.6]
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:482) ~[jackson-databind-2.9.6.jar:2.9.6]
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) ~[jackson-databind-2.9.6.jar:2.9.6]
at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3905) ~[jackson-databind-2.9.6.jar:2.9.6]
at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3219) ~[jackson-databind-2.9.6.jar:2.9.6]
at petmenu.restControllers.ProdottoController.thirdStageInput(ProdottoController.java:92) ~[main/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_202]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_202]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_202]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_202]
这是有趣的代码
@Override
public void serialize(
Prodotto prod, JsonGenerator jgen, SerializerProvider serializer) throws IOException {
jgen.writeStartObject();
// getPeso_netto returns an Integer, that in the example is null
jgen.writeNumberField("peso_netto", prod.getPeso_netto());
牧羊人nacy
相关分类