首页
学习
活动
专区
工具
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/)了解更多关于腾讯云的产品和服务信息。

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

相关·内容

  • JSON字符串反序化为指定的.NET对象类型

    前言:   关于JSON字符串反序化为指定的.NET对象类型数据常见的场景主要是关于网络请求接口,获取到请求成功的响应数据。...本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert.DeserializeObject(string value)方法将对应的JSON字符串化为指定的.NET对象类型数据...方法一、在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 如下是一组.NET后台请求接口成功获取到的复杂的JSON字符串数据: { "id": "123456...方法二、直接JSON字符串格式数据反序列化转化为字典数据(简单JSON字符串数据推荐使用): 如下一组简单的JSON字符串格式数据: { "id": "123456", "code"..."0", "msg": "操作成功" } 通过JsonConvert.DeserializeObject>(string value)方法反序化为字典数据

    3.1K20

    Jackson用法详解

    13、自定义反序列化 有时,可能希望以不同于Jackson ObjectMapper缺省方式的方式JSON字符串读入Java对象。...三)、Jackson 日期转化 默认情况下,Jackson会将java.util.Date对象序列化为long型的值,该值是自1970年1月1日以来的毫秒数。...但是,Jackson还支持日期格式化为字符串。 1、Date-->long 默认的Jackson日期格式,该格式Date序列化为自1970年1月1日以来的毫秒数(long类型)。...2、Date-->String 日期long序列化格式不符合人类的时间查看格式。 因此,Jackson也支持文本日期格式。...Jackson可以JSON读取到JsonNode实例中,然后JsonNode写入JSON。 因此,这一节说明如何JSON反序化为JsonNode以及JsonNode序列化为JSON。

    15.3K21

    Jackson,最牛掰的 Java JSON 解析器

    02、使用 ObjectMapper Jackson 最常用的 API 就是基于”对象绑定” 的 ObjectMapper,它通过 writeValue 的系列方法 Java 对象序列化为 JSON,...ObjectMapper 通过 readValue 的系列方法从不同的数据源 JSON 反序化为 Java 对象。...readValue(String content, Class valueType) 方法,字符串反序化为 Java 对象 readValue(byte[] src, Class valueType...) 方法,字节数组反序化为 Java 对象 readValue(File src, Class valueType) 方法,文件反序化为 Java 对象 来看一下字符串反序化为 Java...对于日期类型的字段,比如说 java.util.Date,如果不指定格式,序列化后显示为 long 类型的数据,这种默认格式的可读性很差。

    1.8K20

    Jaskson精讲第6篇-自定义JsonSerialize与Deserialize实现数据类型转换

    } 下面的代码,我们首先定义了一个PlayerStar4类的对象player,然后 使用writeValueAsString方法player对象序列化为JSON字符串jsonString 然后使用...readValue方法JSON字符串jsonString ,反序化为PlayerStar4类的对象 @Test void testJSON2Object() throws IOException {...(jsonString); //JSON字符串反序化为java对象 PlayerStar4 curry = mapper.readValue(jsonString, PlayerStar4....class); System.out.println(curry); } 但是上面的代码报错了,从下图中可以看出 player对象序列化为JSON字符串jsonString 的过程被正常执行了...JSON字符串反序列化的过程报错了,因为Jackson默认情况下,根本不认识图中”黄框中的黄框“内容这种LocalDateTime序列化之后的JSON字符串数据结构。

    3.5K30

    使用com.fasterxml.jackson.annotation的注解

    名词解释:序列化:将对象转换为 JSON 字符串反序列化: JSON 字符串转换为对象一、@JsonIgnore:作用:在json序列化时java bean中的一些属性忽略掉,序列化和反序列化都受影响...案例:假设有一个包含日期信息的类 CustomDate,并且将其序列化为 JSON 格式时,按照特定的格式输出日期。通过继承 JsonSerializer 来实现自定义的日期序列化逻辑。...库 MyObject 序列化为 JSON 字符串 String json = new ObjectMapper().writeValueAsString(customDate);...库 MyObject 序列化为 JSON 字符串 String json = new ObjectMapper().writeValueAsString(customDate);...特定格式的日期时间反序列化成LocalDateTime对象属性@JsonDeserialize(using = LocalDateTimeFormmatDeserializa.class)private

    24000

    特殊数据格式处理-JSON框架Jackson精解第2篇

    Properties 赋值失败处理 三、未赋值Java Bean序列化 四、日期格式化 一、从URL读取JSON数据 Jackson不仅可以字符串反序化为 Java POJO对象,还可以请求远程的...比如上图中的两个类, 我们先将PlayerStar序列化为JSON字符串,包含age属性 然后JSON字符串转换为PlayerStar2,不包含age属性 @Test void testUnknowProperties...; //JSON字符串反序化为PlayerStar2对象 PlayerStar2 player2 = mapper.readValue(jsonString, PlayerStar2.class...设置disable序列化特性:FAIL_ON_EMPTY_BEANS之后,会序列化为{}字符串。...,Jackson的序列化结果如下 {"now":1600564582571} 如果我们希望在JSON序列化及反序列化过程中,日期格式化,需要做如下的处理 ObjectMapper mapper = new

    1.8K22

    Java 数据库存储数组的方法

    关系数据库通常擅长存储简单的数据类型如整数、字符串日期等,但对于复杂的数据类型如数组、列表或对象,通常需要采用特殊的方法进行处理。...@JoinColumn注解指定了外键的名称。2. 使用JSON数组存储到数据库另一种存储数组的方法是数组序列化为JSON格式,并将其存储为数据库中的字符串。...RolesConverter类实现了AttributeConverter接口,并使用Jackson进行JSON序列化和反序列化。3....使用XML数组存储到数据库除了JSON,我们还可以使用XML格式数组存储为字符串。与JSON类似,首先需要将数组序列化为XML字符串,然后存储到数据库中。...这种方法可以避免数组序列化为字符串,从而提高性能和查询的灵活性。4.1 PostgreSQL中的数组存储在PostgreSQL中,我们可以使用数组数据类型直接存储数组。

    21000
    领券