简单类型Joda日期时间,在Android中进行改装

简单类型Joda日期时间,在Android中进行改装,android,jackson,retrofit2,jodatime,Android,Jackson,Retrofit2,Jodatime,我有一个带有字段的模型: @JsonDeserialize(as = DateTimeDeserializer.class) private DateTime expiryTimeFirebaseCustomAccessToken; 环境署: compile('com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.4') compile('com.squareup.retrofit2:converter-jackson:2.4.0')

我有一个带有字段的模型:

@JsonDeserialize(as = DateTimeDeserializer.class)
private DateTime expiryTimeFirebaseCustomAccessToken;
环境署:

compile('com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.4')
compile('com.squareup.retrofit2:converter-jackson:2.4.0')
compile 'joda-time:joda-time:2.9.9'
compile 'com.squareup.retrofit2:retrofit:2.4.0'
和java代码:

final JodaModule jodaModule = new JodaModule();
        jodaModule.addDeserializer(DateTime.class,
                DateTimeDeserializer.forType(DateTime.class));
        jodaModule.addDeserializer(ReadableDateTime.class,
                DateTimeDeserializer.forType(ReadableDateTime.class));
        jodaModule.addDeserializer(ReadableInstant.class,
                DateTimeDeserializer.forType(ReadableInstant.class));

        final ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.registerModule(jodaModule);

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(serverAddress)                .addConverterFactory(JacksonConverterFactory.create(objectMapper))
                .build();
和json响应:

"expiryTimeFirebaseCustomAccessToken": "2018-03-27T10:44:06.590Z"
但是,我有一个错误:

无法使用缩小类型[简单类型,类org.joda.time.DateTime] 注释(值) com.fasterxml.jackson.datatype.joda.desr.DateTimeDeserializer),来自 “setExpiryTimeFirebaseCustomAccessToken”:类 com.fasterxml.jackson.datatype.joda.desr.DateTimeDeserializer不可用 [简单类型,类org.joda.time.DateTime]的子类型

我找到了解决办法:

@JsonDeserialize(using = MyDateTimeDeserializer.class)
    private DateTime expiryTimeFirebaseCustomAccessToken;
课堂上:

import com.fasterxml.jackson.datatype.joda.cfg.FormatConfig;
import com.fasterxml.jackson.datatype.joda.cfg.JacksonJodaDateFormat;
import com.fasterxml.jackson.datatype.joda.deser.DateTimeDeserializer;

    import org.joda.time.DateTime;

    /**
     * Created by rudi on 3/28/18.
     */

    public class MyDateTimeDeserializer extends DateTimeDeserializer {

        public MyDateTimeDeserializer() {
            super(DateTime.class, FormatConfig.DEFAULT_DATETIME_PARSER);
        }

        public MyDateTimeDeserializer(Class<?> cls, JacksonJodaDateFormat format) {
            super(cls, format);
        }

    }
import com.fasterxml.jackson.datatype.joda.cfg.FormatConfig;
导入com.fasterxml.jackson.datatype.joda.cfg.jacksonjodateformat;
导入com.fasterxml.jackson.datatype.joda.desr.DateTimeDeserializer;
导入org.joda.time.DateTime;
/**
*鲁迪于2018年3月28日创作。
*/
公共类MyDateTimeDeserializer扩展了DateTimeDeserializer{
公共MyDateTimeDeserializer(){
super(DateTime.class,FormatConfig.DEFAULT\u DateTime\u解析器);
}
公共MyDateTimeDeserializer(类cls,JacksonJodDateFormat){
超级(cls,格式);
}
}

My bad,我应该使用:@JsonDeserialize(using=DateTimeDeserializer.class)private DateTime expiryTimeFirebaseCustomAccessToken;但是,现在我得到了错误:失败:class com.fasterxml.jackson.datatype.joda.deser.DateTimeDeserializer没有默认(无参数)构造函数