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

在将map传递给Jackon的valueToTree方法时将java.sql.Timestamp转换为StringNode

在将map传递给Jackson的valueToTree方法时,将java.sql.Timestamp转换为StringNode的过程可以通过自定义Jackson的序列化器来实现。

首先,我们需要创建一个自定义的序列化器,继承自Jackson的JsonSerializer类,并重写serialize方法。在serialize方法中,我们可以将java.sql.Timestamp对象转换为StringNode对象。

代码语言:txt
复制
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.node.TextNode;

import java.io.IOException;
import java.sql.Timestamp;

public class TimestampSerializer extends JsonSerializer<Timestamp> {

    @Override
    public void serialize(Timestamp timestamp, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        String timestampString = timestamp.toString();
        TextNode node = new TextNode(timestampString);
        jsonGenerator.writeTree(node);
    }
}

接下来,我们需要在map中的java.sql.Timestamp字段上添加@JsonSerialize注解,并指定使用我们自定义的序列化器。

代码语言:txt
复制
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();

        Map<String, Object> map = new HashMap<>();
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        map.put("timestamp", timestamp);

        String json = objectMapper.writeValueAsString(map);
        System.out.println(json);
    }

    public static class MyData {
        @JsonSerialize(using = TimestampSerializer.class)
        private Timestamp timestamp;

        public Timestamp getTimestamp() {
            return timestamp;
        }

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

以上代码中,我们创建了一个MyData类,并在其中的timestamp字段上添加了@JsonSerialize注解,并指定使用TimestampSerializer进行序列化。

最后,我们可以使用ObjectMapper的valueToTree方法将map转换为JsonNode对象,其中java.sql.Timestamp字段会被转换为StringNode对象。

代码语言:txt
复制
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();

        Map<String, Object> map = new HashMap<>();
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        map.put("timestamp", timestamp);

        JsonNode jsonNode = objectMapper.valueToTree(map);
        System.out.println(jsonNode);
    }
}

这样,我们就成功地将java.sql.Timestamp转换为StringNode,并将其包含在转换后的JsonNode对象中。

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

相关·内容

  • JavaScript奇技淫巧

    方法一个空参数 如果你想调用一个方法,并不填其中一个参数,JavaScript 就会报错。...,有一个更简洁方法可以空参数传递给一个方法。... JS 中,如果你想要调用一个函数并指定它 this 可以使用 bind 方法。 Bind 语法 fun.bind(thisArg[, arg1[, arg2[, ...]]])...参数 thisArg 当绑定函数被调用时,该参数会作为原函数运行时 this 指向。 arg1, arg2, … 当绑定函数被调用时,这些参数置于实参之前传递给被绑定方法。...对于'filename'和'.hiddenfile',lastIndexOf返回值分别为0和-1无符号右移操作符(»>) -1换为4294967295,-2换为4294967294,这个方法可以保证边缘情况时文件名不变

    53360

    jsonobject详解_objectjson字符串

    指定对象序列化成Json表示形式】和parseObject(String, Class)【json反序列化为指定Class模式】 2.JSONObject实现了Map<String, Object...JDK文档指示:每个代理实例都有一个相关调用处理程序。当一个方法一个代理实例调用,调用方法进行编码并派遣其调用处理程序invoke方法。...有三个字段, 1.serialVersionUID(版本标识)是 Java 为每个序列化类产生版本标识,可用来保证反序列,发送方发送和接受方接收是可兼容对象。...还有JSONObject还支持实现Map接口类型作为容器,所以部分方法会直接调用其他Map类型方法,故此以常用HashMap或者以调用Map接口XXX方法口吻为主,特别的会提示。...String key取获取不同类型值(一般都是我们已知该key映射类型下使用),避免我们使用强失败后果。

    2.3K10

    MyBatis 所有的 jdbcType类型

    处理方式 而实际java.util.Date当做参数传递给Mapper时候 1、假如我们不指定jdbcType,那么这个日期会自动转化会MySQLtimestamp,例子如下: 2、指定jdbcType...3、指定jdbcType=DATE,那么MyBatis会将传入参数截取为2018-07-24(Date) 四、总结 使用java.util.Date作为参数传递给Mapper,不管MySQL日期字段类型是...类型 用mybatis generator生成代码后,执行查询语句,oracle里Date类型字段只精确到年月日,后面时分秒都为零。...(原先默认生成是jdbcType=“DATE”) SQL数据类型 JDBC类型代码 标准Java类型 Oracle扩展Java类型 – 1.0标准JDBC类型: – – CHAR java.sql.Types.CHAR...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站立刻删除。

    1.6K20

    透过网红面试题,超详细解析 parseInt,学不懂找我

    但是面试,有时候想要快速了解一个人对某些知识掌握,还是有意义。而且说出答案是一回事,重点还在于他们得出答案分析过程。...数组map方法 数组map方法,是ES5中为数组定义迭代方法,返回结果是一个新数组,其结果是该数组中每一个元素调用一次提供函数后返回值: 语法: var new_array = arr.map...,可以有三个参数: currentValue:当前迭代项 index:当前迭代项索引 (可选) array: map 方法调用数组(可选) thisObject:执行回调函数定义 this 对象...我们简单温故了数组map方法, 接下来再详细认识一下parseInt方法。 parseInt方法 不少人会觉得parseInt不就是字符串转成一个整数吗, 平时经常使用。...通过上面的几个例子相信对parseInt有一定了解,这里我要补充一点关于进制转换知识,就当复习巩固了(因为面试,我变更了一下题目的数值,发现有的人不会,或者说忘记了进制转换) 任意进制如何十进制

    3.5K10

    PHP7-1:从0开始入门学习

    其实前端领域很多,不同领域又需要学习对应框架,不断踩坑,来熟练使用框架实现网站建设。 前端接触多了,你可能也会好奇后端怎么写api接口,它们怎么把数据封装好传递给?...PHP 之旅 开始 环境搭建 wampserve 下载 IDE VScode PhpStorm 虚拟主机 安装好虚拟环境,就可以开发PHP 了, 开始一个新项目,项目文件都放在www 目录下进行访问...当创建了新项目 Test 文件夹/ index.php , 那么访问,就得通过 http://localhost/test/ 进行访问, 有种方便得访问方法, 建立虚拟主机, 点击 wanp -..."; // 时间戳转换为ISO格式时间 2020-03-10 12:30:02 echo date('Y-m-d H:i:s',$sjc)."..."; // 时间增加 和减少, 应用业务类似 VIP会员到期时间 // 某个时间段增加这么多天 用 DateInterval() //天用D隔开 用T隔开 M分 $times

    2K30

    @RequestBody使用

    基础知识介绍: @RequestBody主要用来接收前端传递给后端json字符串中数据(请求体中数据);而最常用使用请求体无疑是POST请求了,所以使用@RequestBody...如果后端参数是一个对象,且该参数前是以@RequestBody修饰,那么前端传递json参数,必须满足以下要求: 后端@RequestBody注解对应HTTP输入流(含请求体)装配到目标类...实体类对应属性类型要求,会调用实体类setter方法值赋给该属性。...如果某个参数没有value的话,json字符串给后端,要么干脆就不把该字段写到json字符串中;要么写value, 必须有值,null 或””都行。...,如果匹配一致且json中该key对应值 符合(或可转换为)实体类对应属性类型要求,会调用实体类setter方法值赋给该属性。

    8.5K31

    7. Jackson用树模型处理JSON是必备技能,不信你看

    特别是结构高度动态或者不能很好地映射到Java类情况下,它就显得更有价值了。 树模型 树模型是JSON数据内存树表示形式,这是最灵活方法,它就类似于XMLDOM解析器。...JsonNode是所有JSON节点基类,它是一个抽象类,它有一个较大特点:绝大多数get方法均放在了此抽象类里(即使它没有实现),目的是:不进行类型强制转换情况下遍历结构。...但是,大多数修改方法都必须通过特定子类类型去调用,这其实是合理。因为构建/修改某个Node节点,类型类型信息一般是明确,而在读取Node节点大多数时候并不 太关心节点类型。...1、valueToTree(Object) 该方法属相对较为常用:任意对象(包括null)写为一个JsonNode树模型。...但是相对于自动化数据绑定而言还是比较复杂。 树模型(tree model) API只需要取出一个大json串中几个值比较方便。

    1.3K20

    gin框架常用模块

    2)定义map对象方法 where := map[string]interface{}{ "lnum": lnum, "cnum": cnum, "omo_type": omoType...4) 将对象转换为json json.Marshal(res) 这句话是Go语言中结构体对象转换为JSON格式数据。...这种写法适用于定义一个指针变量,需要在后续代码中通过new()函数或其他方式对它进行初始化,才能使用该指针变量进行赋值、参等操作。 在后续传参,两种写法区别在于传递类型不同。...对于第二种写法 var res *dao.BpCourseware,res是一个指向dao.BpCourseware类型指针变量,需要将它地址作为参数传递给需要函数或方法。...例如,可以通过&res获取res变量地址,然后地址作为参数传递给需要函数或方法函数或方法内部,可以通过*res获取指针指向实际数据. 那么什么时候用第一种,什么时候用第二种呢?

    25420

    FlinkCDCDEBEZIUM自定义日期转换器

    Flinkcdc研究 最近在研究Flinkcdc数据采集,底层技术为debezium,debezium会将日期转为5位数字,日期时间位13位数字,看之前代码解决办法是: 1.识别十三位数字进行转换为日期格式...其实不是,而是不同jdbc中都有不同映射。(通过chatgpt证实了一下) mysql转换 mysql启动,快照期间初始化转换器,binlog期间仍进行一次初始化转换器。...(93) TIMESTAMP java.sql.Timestamp(2014) java.time.ZonedDateTime(2014) sqlserver转换 sqlserver启动 快照期间初始化转换器...刚开始涉及思路:大统一是全形式,mysql和sqlserver都写到一个方法中去。 实际中发现并不是很合理。...最后依照官网模板重写方法就可以了。代码地址点击直达 使用方法 converters参数为:自定义转换器名字,可以随意设置。设置值就作为转换器名字,以后参数中就要使用这个名字。

    3.1K30

    FastJson与Jackson处理浮点型差异引发思考

    最新在对接某瓜支付签名偶尔会出现签名失败问题,于是进行整体复盘,先看看对方sdk中最重要一段代码:JavaString data = createLinkString((JSONObject)JSONObject.toJSON...(requestBody),null);使用FastJson任意对象转换Json再转换为Map类型传递给createLinkString函数进行md5签名,我们公司禁止使用FastJson,于是我使用是...是的,很完美,但是处理浮点型时会有问题,举个FastJson栗子:JavaHashMap body = new HashMap();body.put("price...那么怎么解决呢,其实只需要把浮点数转换为字符串类型即可:JavaHashMap body = new HashMap();body.put("price", "0.10...,金额Double,单位元,无法理解,理解不了。。。

    31030

    深入理解Struts2----类型转换

    类型转换就是指我们客户端使用GET/POST或者action标签转发到某个具体Action实例中时候,我们传入参数可以自动转换为Action实例实例属性一个过程。...其支持从String类型转换目标类型如下: boolean和Boolean:字符串true会转换为布尔类型值true char和Character:字符串字符 int和Integer:字符串整型类型...其实我们到这里可以看出来,使用ognl语法可以实现非基本类型转换,实际上还是问题转化到我们讨论第一种情况,也就是把这么一个问题:如何一个String类型转换为非基本类型,转化为了:如何把一个String...上述介绍是list集合作为Action属性情况,对于map集合作为Action实例属性情况其实是类似的,只是值和遍历方面有细微差别。...该抽象类实现了TypeConverter接口并默认实现了一些方法,我们自定义自己类型转换器时候只需要重写该类某个方法即可,大大降低了我们开发成本。

    2.1K90

    7. Jackson用树模型处理JSON是必备技能,不信你看

    特别是结构高度动态或者不能很好地映射到Java类情况下,它就显得更有价值了。 树模型 树模型是JSON数据内存树表示形式,这是最灵活方法,它就类似于XMLDOM解析器。...JsonNode是所有JSON节点基类,它是一个抽象类,它有一个较大特点:绝大多数get方法均放在了此抽象类里(即使它没有实现),目的是:不进行类型强制转换情况下遍历结构。...但是,大多数修改方法都必须通过特定子类类型去调用,这其实是合理。因为构建/修改某个Node节点,类型类型信息一般是明确,而在读取Node节点大多数时候并不 太关心节点类型。...(Object) 该方法属相对较为常用:任意对象(包括null)写为一个JsonNode树模型。...但是相对于自动化数据绑定而言还是比较复杂。 树模型(tree model) API只需要取出一个大json串中几个值比较方便。

    1.8K30

    RxJava从入门到不离不弃(三)——转换操作符

    map()操作符就是用于变换Observable对象map操作符返回一个Observable对象,这样就可以实现链式调用,一个Observable对象上多次使用map操作符,最终将最简洁数据传递给...这个例子只是简单解释map操作符作用,其核心就是数据进行转换,数据转换map操作符Func1中实现,Func1第一个泛型是传入类型,第二个泛型是输出类型,call方法中实现转换,当然传入类型和输出类型完全可以不同...可以看出: map() 方法参数中 String 对象转换成一个 Bitmap 对象后返回,而在经过 map() 方法后,事件参数类型也由 String 转为了 Bitmap。...map被订阅每传递一个事件执行一次onNext方法, flatmap多用于多对多,一对多,再被转化为多个,一般利用from/just进行一一分发。...被订阅所有数据传递完毕汇总到一个Observable然后一一执行onNext方法(执行顺序不同)。

    92630

    【数据结构】串基本操作原来可以这样实现……

    2.4 串清空 当我们要清空一个串,只需要将串的当前串长置为0即可,这个比较简单,如果我们想要做完美一点,我们可以串中元素清空过程中全部置为0,如下所示: //串清空 void ClearString...chars为空指针,说明参出现了问题 return false;//参有问题则无法进行后续操作,因此返回false char* tmp = T->ch;//通过创建临时指针指向原空间 T-...if (T == NULL || chars == NULL)//当串T或者串chars为空指针,说明参出现了问题 return false;//参有问题则无法进行后续操作,因此返回false...StrCopy(HString* T, char* S) { assert(T);//当串T为空指针,说明参出现了问题 int len = StrLength(S);//获取串S串长 if...struct StringNode* next;//指向下一个块后继指针 }StringNode, * LinkString;//重命名后数据类型名 //StringNode——表示块链每个块,类型为结构体类型

    11610
    领券