JsonDeserialize:
1、請求接收的是一個json,並且由對象接收
@RequestMapping(value = "/query", method = {RequestMethod.POST},consumes = "application/json") public WebDataListResponse query(@RequestBody(required = true) DataLogQuryEntity dataLogQuryEntity){
2、對象屬性的set方法編寫注解
DataLogQuryEntity對象中需要接受Date類型的對象:
public class DataLogQuryEntity { @JsonDeserialize(using = DateJsonDeserializer.class) public void setStartTime(Date startTime) { this.startTime = startTime; } }
注lombok的注意一定要寫在setter方法上
3、自定義實現
import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class DateJsonDeserializer extends JsonDeserializer<Date> { public static final SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public Date deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException, JsonProcessingException { try { if (jsonParser != null && StringUtils.isNotEmpty(jsonParser.getText())) { return format.parse(jsonParser.getText()); } else { return null; } } catch (Exception e) { System.out.println(e.getMessage()); throw new RuntimeException(e); } } }
JsonSerialize用法:
1、對象的get方法應用注解
@JsonSerialize(using = CustomDateSerializer.class) public LocalDateTime getUpdateTime() { return updateTime; }
2、自定義實現
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; import java.time.LocalDateTime; public class CustomDateSerializer extends JsonSerializer<LocalDateTime> { @Override public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { gen.writeString(value.toString()); } }