Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring3.1中,我在哪里指定Jackson SerializationConfig.Feature设置_Java_Json_Spring_Spring Mvc_Jackson - Fatal编程技术网

Java 在Spring3.1中,我在哪里指定Jackson SerializationConfig.Feature设置

Java 在Spring3.1中,我在哪里指定Jackson SerializationConfig.Feature设置,java,json,spring,spring-mvc,jackson,Java,Json,Spring,Spring Mvc,Jackson,我很困惑,为什么Spring使用默认的jackson包含似乎定制了默认的jackson配置 其中一个设置是WRITE\u DATES\u AS\u TIMESTAMPS,它是true,但是Spring在某个地方将其更改为false,并提供了一种日期格式 这到底发生在哪里?我希望我的日期保持连续的数字 更新:结果不是spring导致了问题,而是hibernates代理类导致了问题。出于某种原因,如果hibernate的类型映射为type=“date”,则它将序列化为日期字符串,但如果它的type=

我很困惑,为什么Spring使用默认的jackson包含似乎定制了默认的jackson配置

其中一个设置是
WRITE\u DATES\u AS\u TIMESTAMPS
,它是
true
,但是Spring在某个地方将其更改为
false
,并提供了一种日期格式

这到底发生在哪里?我希望我的日期保持连续的数字


更新:结果不是spring导致了问题,而是hibernates代理类导致了问题。出于某种原因,如果hibernate的类型映射为
type=“date”
,则它将序列化为日期字符串,但如果它的
type=“timestamp”
按预期序列化。与其花太多时间研究这个问题,我现在决定将所有映射更改为时间戳。

从3.1 M1开始,您可以通过
mvc:annotation-driven
的子元素注册
HttpMessageConverters
来指定jackson自定义配置

请参阅使向AnnotationMethodHandlerAdapter添加新消息转换器更容易

例如:

<bean id="jacksonObjectMapper" class="x.y.z.CustomObjectMapper">                
</bean>

<mvc:annotation-driven>
    <mvc:message-converters>
       <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
           <property name="objectMapper" ref="jacksonObjectMapper" />
       </bean>
       </mvc:message-converters>
</mvc:annotation-driven>

除了使用指定的日期格式构造实例外,还将启用或禁用 Feature.WRITE_DATES_AS_timestamp(如果格式设置为null,则启用;如果格式设置为非null,则禁用)


这似乎正是我想要的,尽管它似乎不适合我,或者出于其他原因,Spring选择了一个不同于我创建的
MappingJacksonHttpMessageConverter
实例。是否有办法识别已创建的、可被选中的
MappingJacksonHttpMessageConverter
的所有实例?我已确认
CustomObjectMapper
实现只需将测试对象写入
this.setSerializationConfig(serialConfig)之后的文件,即可写入正确的格式,它工作正常,尽管
声明似乎没有使用此实例。我是否可能需要为已知类型指定
id
?我发现了问题。这归结为使用hibernate映射
type=“date”
,更改为
type=“timestamp”
解决了这个问题。
    @Component("jacksonObjectMapper")
    public class CustomObjectMapper extends ObjectMapper {

        @PostConstruct
        public void afterPropertiesSet() throws Exception {

            SerializationConfig serialConfig = getSerializationConfig()     
                        .withDateFormat(null);

                  //any other configuration

            this.setSerializationConfig(serialConfig);
        }
    }