首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jackson将日期-时间字符串反序列化为long?

Jackson是一个流行的Java库,用于处理JSON数据的序列化和反序列化。它提供了一种简单而灵活的方式来将Java对象转换为JSON格式,并将JSON格式转换回Java对象。

在Jackson中,将日期-时间字符串反序列化为long可以通过自定义反序列化器来实现。以下是一个示例代码:

代码语言:txt
复制
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTimeDeserializer extends JsonDeserializer<Long> {
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public Long deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        String dateString = jsonParser.getText();
        try {
            Date date = DATE_FORMAT.parse(dateString);
            return date.getTime();
        } catch (ParseException e) {
            throw new IOException("Failed to parse date: " + dateString, e);
        }
    }
}

public class Main {
    public static void main(String[] args) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule module = new SimpleModule();
        module.addDeserializer(Long.class, new DateTimeDeserializer());
        objectMapper.registerModule(module);

        String json = "{\"timestamp\":\"2022-01-01 12:00:00\"}";
        MyObject myObject = objectMapper.readValue(json, MyObject.class);
        System.out.println(myObject.getTimestamp()); // 输出:1641024000000
    }
}

public class MyObject {
    private Long timestamp;

    public Long getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(Long timestamp) {
        this.timestamp = timestamp;
    }
}

在上述代码中,我们定义了一个自定义的反序列化器DateTimeDeserializer,它将日期-时间字符串解析为Date对象,并返回其对应的时间戳(long类型)。然后,我们使用ObjectMapper注册这个反序列化器,并将其应用于MyObject类中的timestamp属性。

这样,当我们使用ObjectMapper将JSON字符串反序列化为MyObject对象时,Jackson会自动调用DateTimeDeserializer来处理日期-时间字符串,并将其转换为long类型的时间戳。

这种方式可以很方便地处理日期-时间字符串的反序列化,并且可以适用于各种场景,例如日志记录、时间戳的存储和传输等。

腾讯云提供了一系列与云计算相关的产品和服务,例如云服务器、云数据库、云存储等。您可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的产品和服务信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券