इसे हासिल करने के दो तरीके हैं।
- जैक्सन सीरियल का उपयोग करें - वैश्विक रूपांतरण के लिए। हर रूपांतरण पर लागू होता है
- उपयोगकर्ता स्प्रिंग WebDataBinder और PropertyEditorSupport। आप चुन सकते हैं कि किस नियंत्रक को इस रूपांतरण की आवश्यकता है
जैक्सन सीरिएलाइज़र लागू करें
जैक्सन मॉड्यूल में उपरोक्त वर्ग को पंजीकृत करें
public class CustomDateTimeSerializer extends JsonSerializer<DateTime> {
// Customize format as per your need
private static DateTimeFormatter formatter = DateTimeFormat
.forPattern("yyyy-MM-dd'T'HH:mm:ss");
@Override
public void serialize(DateTime value, JsonGenerator generator,
SerializerProvider serializerProvider)
throws IOException {
generator.writeString(formatter.print(value));
}
}
जैक्सन मॉड्यूल में सीरियलाइज़र जोड़ें
@Configuration
public class JacksonConfiguration {
@Bean
public JodaModule jacksonJodaModule() {
final JodaModule module = new JodaModule();
module.addSerializer(DateTime.class, new CustomDateTimeSerializer());
return module;
}
}
WebBinder API और PropertyEditorSupport का उपयोग करें
PropertyEditorSupport लागू करें
public class DateTimeEditor extends PropertyEditorSupport {
private final DateTimeFormatter formatter;
public DateTimeEditor(String dateFormat) {
this.formatter = DateTimeFormat.forPattern(dateFormat);
}
public String getAsText() {
DateTime value = (DateTime) getValue();
return value != null ? value.toString(formatter) : "";
}
public void setAsText( String text ) throws IllegalArgumentException {
if ( !StringUtils.hasText(text) ) {
// Treat empty String as null value.
setValue(null);
} else {
setValue(new DateTime(formatter.parseDateTime(text)));
}
}
}
इस प्रॉपर्टी एडिटर को रेस्ट कंट्रोलर में जोड़ें
@RestController
@RequestMapping("/abc")
public class AbcController {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(DateTime.class, new DateTimeEditor("yyyy-MM-dd", false));
}
}