import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class MapToJsonExample {
public static void main(String[] args) throws Exception {
Map<String, Object> map = new HashMap<>();
map.put("name", "John");
map.put("age", 30);
map.put("birthday", new Date());
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Date.class, new CustomDateSerializer());
mapper.registerModule(module);
String json = mapper.writeValueAsString(map);
System.out.println(json);
}
public static class CustomDateSerializer extends JsonSerializer<Date> {
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
@Override
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
gen.writeString(new java.text.SimpleDateFormat(DATE_FORMAT).format(value));
}
}
}
在上面的代码中,我们首先创建了一个包含Date类型的Map。然后,我们使用ObjectMapper
类将Map序列化为JSON字符串。注意到在CustomDateSerializer
类中,我们重写了JsonSerializer
的serialize()
方法,并在其中指定了Date类型的格式。这样,在序列化为JSON字符串时,Date类型的值就会以指定的格式输出。