How can I have JAX-RS return a Java 8 LocalDateTime property as a JavaScript-style Date String?

前端 未结 3 1864
谎友^
谎友^ 2021-01-02 06:44

I created a RESTful web service using JAX-RS method annotations:

@GET
@Path(\"/test\")
@Produces(MediaType.APPLICATION_JSON)
public MyThing test()
{
    MyTh         


        
3条回答
  •  甜味超标
    2021-01-02 07:38

    UPDATED: works with: 2.4.2

    When I try the above:

    Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase.findFormatOverrides(Lcom/fasterxml/jackson/databind/SerializerProvider;Lcom/fasterxml/jackson/databind/BeanProperty;Ljava/lang/Class;)Lcom/fasterxml/jackson/annotation/JsonFormat$Value;

    I get the following error. Any ideas plse?

    2.8.0
    
            
                com.fasterxml.jackson.core
                jackson-annotations
                ${jackson.version}
            
            
                com.fasterxml.jackson.core
                jackson-databind
                ${jackson.version}
            
            
                com.fasterxml.jackson.core
                jackson-core
                ${jackson.version}
            
            
                com.fasterxml.jackson.datatype
                jackson-datatype-jsr310
                ${jackson.version}
    

    package com.jobs.spring.configuration;
    
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.ext.ContextResolver;
    import javax.ws.rs.ext.Provider;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.datatype.jsr310.JSR310Module;
    
    @Provider
    @Produces(MediaType.APPLICATION_JSON)
    public class JacksonContextResolver implements ContextResolver {
        private static final ObjectMapper om = init();
    
        @Override
        public ObjectMapper getContext(Class objectType) {
            return om;
        }
    
        private static ObjectMapper init() {
            ObjectMapper om = new ObjectMapper();
            om.registerModule(new JSR310Module());
            return om;
        }
    }
    

    Also tried with the following as JSR310Module() is deprecicated in 2.8.0

    om.registerModule(new JavaTimeModule());
    

提交回复
热议问题