如何用Jackson手动设置单个bean属性?

时间:2017-06-06 20:32:25

标签: jackson jax-rs javabeans

我正在尝试手动更新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资源上下文/类吗?)

0 个答案:

没有答案