最近遇到一个问题,我希望把类通过JSON.toJsonString转换成JSON字符串。
beginDate是Timestamp类型,但是转换后变成时间戳数字。无法保存到数据库。
我希望JSON.toJsonString后,把Timestamp字段变成yyyy-MM-dd HH:mm:ss格式字符串。
解决方案是
创建FastJson全局配置类:
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.*; import com.asset.common.entity.rent.RentRelation; import org.springframework.context.annotation.Configuration; import java.sql.Date; import java.sql.Timestamp; import java.text.SimpleDateFormat; @Configuration public class FastJSONConfig { static { SerializeConfig serializeConfig = new SerializeConfig(); // 自定义Timestamp类型的序列化器 ObjectSerializer timestampSerializer = (serializer, object, fieldName, fieldType, features) -> { JSONSerializer jsonSerializer = (JSONSerializer) serializer; if (object instanceof Timestamp) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonSerializer.write(sdf.format((Timestamp) object)); } else { jsonSerializer.write(object.toString()); // 默认情况下调用toString() } }; serializeConfig.put(Timestamp.class, timestampSerializer); // 设置全局配置 JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.WriteDateUseDateFormat.getMask(); } }
配置完成后,发现Timestamp字段已可以正常转换。