我希望能够添加请求范围的属性(JAX-RS ContainerRequestContext
,因为我宁愿使用Jackson将我的参数转换为对象而不是JAX-RS的病对ParameterConverterProviders
构思并笨拙DeserializationContext
},以便可以在JsonDeserializer
内获取。我必须调用convertValue()
而不是简单地readValue()
(不处理实际的JSON)所以我无法在每个线程中创建ObjectReader
,除非我愿意将我的地图序列化为JSON首先是字符串然后再读回来 - 这将是非常低效的。
我希望能够按照请求的方式完成以下任务:
ObjectMapper om = new ObjectMapper();
//in request-scoped context:
om.getDeserializationContext().setAttribute("requestContext",containerRequestContext)
Map<String,Object> mapOfRequestParameters = ...
BeanOfVastImportance bean = om.convertValue(mapOfRequestParameters,BeanOfVastImportance.class)
如果没有需要为每个请求线程创建新的ObjectMapper的大量,多余的开销,我怎样才能实现这一目标?
答案 0 :(得分:4)
这可以通过以下方式轻松实现:
objectMapper.reader()。forType(Request.class).withAttribute(“key”,“value”)。readValue(“source”)