【问题标题】:incorrect jackson date format from a rest service休息服务的杰克逊日期格式不正确
【发布时间】:2016-02-25 12:03:47
【问题描述】:

我有一个像这样有 2 个日期的简单对象

例子:

public class Person extends RealmObject {

    @PrimaryKey
    private int person_id;
    private Date person_date_time1;
    private Date person_date_time2;

//getter , setters

}

android rest服务返回的json是这样的结构

{
            "person_id": 11077,
            "person_date_time1": "2012-11-27", 
            "person_date_time2": "2011-11-27T08:30:00Z" 
}

问题是杰克逊格式化程序解析的日期不正确:(

person.person_date_time1 打印 Mon Nov 26 19:00:00 EST 2012(少一天) person.person_date_time2 打印 Sun Nov 27 03:30:00 EST 2011(减少 5 小时)

如何在 Android 上使用 jackson 定义反序列化日期的正确格式?

其余服务android

@Rest(rootUrl = ConstantsUtils.URL, converters = { MappingJackson2HttpMessageConverter.class })
@Accept(MediaType.APPLICATION_JSON)
public interface PersonRest extends RestClientErrorHandling {

    @Get("/person/{id}")
    Person getPerson(String id);
}

我不能使用 jodadatetime,因为我正在使用 api 来持久化数据(realm.io),它只适用于日期

非常感谢

【问题讨论】:

    标签: android json date jackson


    【解决方案1】:

    Jakcson 解析器很好,但您似乎对 JSON 上的日期表示方式有疑问。 Jackson 解析器将遵循创建 Date 对象的确切模式,因此您必须匹配它。

    【讨论】:

    • 谢谢。我无法操纵 json 中存在的数据。我需要向 jackson deserializer 添加格式。在春天,我们可以使用 ObjectMapper ,例如 getObjectMapper().getDeserializationConfig().setDateFormat(dateFormat);但我不知道如何对jackson for Android + android annotations 做同样的事情:(
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2020-04-21
    相关资源
    最近更新 更多