我在下面的序列化器中进行JodaTime处理:
public class JodaDateTimeJsonSerializer extends JsonSerializer<DateTime> { private static final String dateFormat = ("MM/dd/yyyy"); @Override public void serialize(DateTime date, JsonGenerator gen, SerializerProvider provider) throws IOException, JsonProcessingException { String formattedDate = DateTimeFormat.forPattern(dateFormat).print(date); gen.writeString(formattedDate); } }
然后,在每个模型对象上,执行以下操作:
@JsonSerialize(using=JodaDateTimeJsonSerializer.class ) public DateTime getEffectiveDate() { return effectiveDate; }
通过以上设置,@ResponseBodyJackson Mapper肯定可以工作。但是,我不喜欢继续写书的想法@JsonSerialize。我需要的是没有@JsonSerializeon模型对象的解决方案。是否可以将这种配置作为一个配置写入spring xml的某个地方?
@ResponseBodyJackson Mapper
@JsonSerialize
@JsonSerializeon
感谢你的帮助。
尽管你可以为每个日期字段添加注释,但最好为对象映射器进行全局配置。如果使用杰克逊,则可以按以下方式配置弹簧:
<bean id="jacksonObjectMapper" class="com.company.CustomObjectMapper" /> <bean id="jacksonSerializationConfig" class="org.codehaus.jackson.map.SerializationConfig" factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig" > </bean>
对于CustomObjectMapper:
public class CustomObjectMapper extends ObjectMapper { public CustomObjectMapper() { super(); configure(Feature.WRITE_DATES_AS_TIMESTAMPS, false); setDateFormat(new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'ZZZ (z)")); } }
当然,SimpleDateFormat可以使用你需要的任何格式。