我正在尝试手动更新bean(它是JAX-RS资源方法的参数)。要在bean中设置的字段的值将从上下文中按JSON反序列化。
我想这样做:
ObjectMapper objectMapper = new ObjectMapper();
// .... <configured, ClassIntrospector obtained for type> ...
BeanProperty prop;
// ... <bean property resolved through ClassIntrospector> ...
AnnotatedMember mutator = prop.getMutator();
JsonFactory jf = new JsonFactory();
JsonParser parser = jf.createParser(textProp);
Object value = objectMapper.getDeserializationContext().readValue(parser, mutator.getRawType());
mutator.setValue(beanInstance, value);
问题是杰克逊正在抛出NullPointerException
:
at com.fasterxml.jackson.databind.DeserializationContext.getTypeFactory(DeserializationContext.java:251)
at com.fasterxml.jackson.databind.DeserializationContext.readValue(DeserializationContext.java:758)
我向调试器确认我_config
的{{1}}字段是DeserializationContext
,这是我在代码序列中访问的内容。
那么,是什么给出的?如何正确配置以使其有效? (还是有其他方法可以手动将JSON片段反序列化为给定类型,尊重JAX-RS资源上下文/类吗?)