近日,使用Jackson转化JSON对象的时候,显示的时候,日期始终显示不正确,输出的日期是一串数字代表的时间戳,不符合要求,所以想到Jackson应当有方法设置输出的日期格式。后来一查果然有两种方式来实现:
1.普通的方式:
默认是转成timestamps形式的,通过下面方式可以取消timestamps。
Java代码
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); 这样将使时间生成使用所谓的use a [ISO-8601 ]-compliant notation, 输出类似如下格式的时间: "1970-01-01T00:00:00.000+0000".
当然也可以自定义输出格式:
Java代码
objectMapper.getSerializationConfig().setDateFormat(myDateFormat);
objectMapper.getSerializationConfig().setDateFormat(myDateFormat);
Java代码
myDateFormat对象为java.text.DateFormat,具体使用清查java API
myDateFormat对象为java.text.DateFormat,具体使用清查java API2.annotaion的注释方式:
先定义自己需要的格式,例如:
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
/**
* java日期对象经过Jackson库转换成JSON日期格式化自定义类
* @author godfox
* @date 2010-5-3
*/
public class CustomDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
}
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
/**
* java日期对象经过Jackson库转换成JSON日期格式化自定义类
* @author godfox
* @date 2010-5-3
*/
public class CustomDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
}
然后在你的POJO上找到日期的get方法
@JsonSerialize(using = CustomDateSerializer.class)
public Date getCreateAt() {
return createAt;
}
StringWriter sw = new StringWriter();
JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
JacksonUtil.getInstance().writeValue(gen, jsonlist);
gen.close();
String finalInfo = sw.toString();
System.out.println("finalinfo is:"+finalInfo );
分享到:
相关推荐
4. **无配置文件使用**:由于Spring与Jackson的深度集成,通常不需要在配置文件中显式配置Jackson的相关设置,例如ObjectMapper的行为,除非有特殊需求,如日期格式化、自定义序列化等。 5. **Jackson的其他模块**...
Jackson的强大之处在于它的性能、灵活性和丰富的功能,如支持数据类型转换、处理复杂JSON结构、支持日期和时间序列化等。 总结来说,"jackson-2.9.3jar包合集"是一个包含Jackson核心库、注解支持以及可能的数据格式...
除了基本的功能外,Jackson库还有许多高级特性,如类型转换、类型安全的泛型处理、处理日期和时间的模块、以及对XML和CSV的支持等。在实际开发中,根据具体需求,可以结合使用这些特性来优化JSON操作的效率和灵活性...
在SpringMVC中,Jackson作为默认的HTTP消息转换器,负责将Controller方法返回的对象转换成JSON响应,并将请求中的JSON数据转换为Java对象。通过配置SpringMVC的`MappingJackson2HttpMessageConverter`或`Jackson2...
`ObjectMapper`不仅支持注解驱动的映射,还可以处理复杂的类型转换,如枚举、泛型、日期时间等。此外,`ObjectMapper`还提供了配置选项,以适应不同的序列化需求,比如忽略空值、自定义格式化等。 在实际开发中,这...
虽然Jackson 1.9.x系列在当时是一个可靠的解决方案,但随着时间的推移,Jackson已经发展到更高的版本,如2.x系列,提供了更多的功能和性能优化。因此,对于新的项目,建议使用更新的Jackson版本,如2.13.x,以利用...
通过自定义`MessageConverter`或者调整Spring的配置,我们可以定制Jackson的行为,比如改变默认的日期格式,或者添加自定义的序列化模块。 在实际开发中,`jackson-core-2.5.0.jar`的使用往往结合`jackson-databind...
- 使用`@JsonFormat`来控制日期和时间的序列化格式。 - 定制`ObjectMapper`配置,例如设置日期格式,启用或禁用特定的序列化特性。 5. **安全性考虑**: - 为了防止潜在的安全问题,如JSON注入,确保启用`...
5. **`@JsonFormat`**:用于格式化日期和时间,可以指定特定的日期时间格式。 在SSM中,Jackson的使用通常涉及到以下场景: 1. **HTTP请求和响应处理**:在SpringMVC中,我们可以配置`JacksonHttpMessageConverter...
1. 配置`ObjectMapper`:通过`Jackson2ObjectMapperBuilder`,可以定制化`ObjectMapper`的行为,比如设置日期格式、忽略未知属性等。 2. 使用模块:根据项目需求,可以选择性引入Jackson的特定模块,例如`jackson-...
例如,`@JsonProperty`用于指定哪个字段应该映射到JSON,`@JsonIgnore`用于忽略某个属性,`@JsonFormat`则可以定制日期时间的格式。 7. **性能优化**: Jackson 2.6版本引入了许多性能优化,包括更快的序列化速度...
- 功能全面:Jackson支持更复杂的JSON结构和特性,如嵌套对象、数组、日期时间处理等。 - 注解支持:通过注解可以实现细粒度的控制,无需编写大量额外的代码。 - 扩展性强:Jackson有一个庞大的生态系统,包含了许多...
通过配置`Jackson2ObjectMapperBuilder`,我们可以定制JSON序列化和反序列化的规则,如日期格式、字段忽略策略等。 为了在Spring MVC项目中使用Jackson 2.5.3,你需要在项目的类路径下包含对应的jar包,这通常通过...
- 使用`@JsonFormat`注解来处理日期和时间的格式。 - 使用`@JsonView`定义视图,根据不同的请求只暴露部分字段。 - 定制`ObjectMapper`实例以全局设置,例如配置日期格式,启用或禁用特定的特性。 **总结** ...
使用Jackson库,开发者可以方便地处理服务器返回的JSON数据,将其转化为易于操作的Java对象,同时也能将本地数据结构转化为JSON格式发送给服务器。 在实际开发中,结合这三个模块,开发者可以实现以下功能: - 序列...
Jackson 2.x引入了模块化设计,允许添加额外的功能模块,如处理XML的`jackson-dataformat-xml`模块,处理日期时间的`jackson-datatype-jsr310`模块等,这使得Jackson可以处理更广泛的序列化需求。 总结来说,...
在实际应用中,可能还需要配置Jackson以满足特定需求,例如日期格式化、自定义序列化器或反序列化器等。这可以通过在Spring配置中注入`ObjectMapper`并设置相关属性来实现。同时,为了提高性能和减少依赖,可以根据...
此外,Jackson还提供了许多高级特性,如忽略未设置的属性(`@JsonIgnore`),自定义序列化和反序列化逻辑(`@JsonSerialize`, `@JsonDeserialize`),以及日期格式化(`@JsonFormat`)等。你还可以配置Spring MVC的`...
以上示例中,`birthDate`属性将使用`CustomDateSerializer`进行序列化,确保日期以特定格式输出。 通过上述对Jackson注解的介绍,我们可以看到Jackson提供了一种极其灵活的方式来处理JSON数据。无论是简单的序列化/...
这样,当Jackson序列化`totalCost`属性时,会调用`BigDecimalSerialize`类中的`serialize`方法,确保返回的JSON数据格式正确。 ### 扩展应用 `@JsonSerialize`注解不仅可以用于BigDecimal,还可以应用于其他类型,...