我将 (s3.submission_date < s1.submission_date) = dateDIFF(s1.submission_date , '2016-03-01'))
与spring
RestTemplate
xml一起用于网络服务。
postForEntity(req, rsp)
使用@Bean
public Jackson2ObjectMapperBuilderCustomizer initJackson() {
return (builder) -> builder.modules(new JaxbAnnotationModule());
}
从xsd
文件自动生成java bean。因此我无法修改生成的类!
问题:
xsdtojava
结果:@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@Generated
public class MyRequest {
@XmlElement(required = true)
private SubReq subs;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType
public static class SubReq {
private List<String> list;
}
}
元素包含其他嵌套的<list>
元素。但为什么?我怎么能阻止?
电流:
<list>
我的目标:
<MyRequest>
<SubReq>
<list>
<list>val1</list>
<list>val2</list>
</list>
</SubReq>
</MyRequest>
如何配置jackson以不将列表包装在内?
<MyRequest>
<SubReq>
<list>val1</list>
<list>val2</list>
</SubReq>
</MyRequest>
元素是自动生成的:
MyRequest
答案 0 :(得分:0)
您可以将DeserializationFeature.UNWRAP_ROOT_VALUE
设置为true:
objectMapper = new com.fasterxml.jackson.databind.ObjectMapper();
objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
此属性的默认值为true
。
这是一个限制,我最好在生成代码时使用@JsonUnwrapped
注释这些字段。
答案 1 :(得分:0)
我通过defaultUseWrapper(false)
禁用unwrapper来解决它:
@Bean
public Jackson2ObjectMapperBuilderCustomizer initJackson() {
return (builder) -> builder.modules(new JaxbAnnotationModule())
.defaultUseWrapper(false);
}