sql >> データベース >  >> NoSQL >> MongoDB

日時形式をWebサービスから文字列に変換します

    これを実現するには2つの方法があります。

    1. JacksonSerializersを使用する-グローバル変換用。すべての変換に適用されます
    2. ユーザーSpringWebDataBinderおよびPropertyEditorSupport。この変換が必要なコントローラーを選択できます

    Jacksonシリアライザーを実装する

    上記のクラスをジャクソンモジュールに登録する

    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;
        }
    }
    

    WebBinderAPIと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)));
            }
        }
    }
    

    このPropertyEditorをRESTコントローラーに追加します

    @RestController
    @RequestMapping("/abc")
    public class AbcController {
    
        @InitBinder
        public void initBinder(WebDataBinder binder) {
            binder.registerCustomEditor(DateTime.class, new DateTimeEditor("yyyy-MM-dd", false));
        }
    
    }
    



    1. GPathを使用して文字列にドットを含むGroovyオブジェクトを深くトラバースする方法

    2. FlaskとMongoDB-Forループが機能しない

    3. mongoDB関連の問題を効率的に解決するにはどうすればよいですか?

    4. redisストア128ビット番号