当前位置: 代码网 > it编程>编程语言>Javascript > jacksonJson序列化Map时指定Long序列化为String的实践

jacksonJson序列化Map时指定Long序列化为String的实践

2026年01月17日 Javascript 我要评论
问题我们都知道前端接收long类型的数据时会产生经度问题,一般我们会在向前端返回数据时将long转为string类型,以jacksonjson为例我们只需要在对应的属性值上添加如下注解就可以,但有时候

问题

我们都知道前端接收long类型的数据时会产生经度问题,一般我们会在向前端返回数据时将long转为string类型,以jacksonjson为例我们只需要在对应的属性值上添加如下注解就可以,但有时候我们需要将map中的long转为string类型

@jsonserialize(using = tostringserializer.class)
private long id;

当然我们可以一劳永逸的解决这个问题,实现webmvcconfigurer接口重写它的extendmessageconverters()方法来实现,但这毕竟是全局设置,有时候我们会遇到一些比较复杂的情况就需要自定义来实现,我遇到的问题就是需求与全局配置不能满足导致的,所以决定不经过springmvc的序列化,直接返回json,所以就有了以上的问题

测试

我们可以先看一下这个,直接转json的话是原封不动将long还是转为了long类型,如果我们这么返回前端就会出现经度问题

 public static void main(string[] args) throws jsonprocessingexception {

        map<string, object> map = new hashmap<>();
        map.put("id", 1655876612393566210l);

        objectmapper mapper = new objectmapper();

        string json = mapper.writevalueasstring(map);
        system.out.println(json);
        //输出结果: {"id":1655876612393566210}
    }

方法

如下给它加工一下使用simplemodule将指定long类型转换为string类型,同理我们也可以对其他类型进行自定义转换

 public static void main(string[] args) throws jsonprocessingexception {

        map<string, object> map = new hashmap<>();
        map.put("id", 1655876612393566210l);

        objectmapper mapper = new objectmapper();
        
        simplemodule simplemodule = new simplemodule();
        simplemodule.addserializer(long.class, tostringserializer.instance);
        mapper.registermodule(simplemodule);

        string json = mapper.writevalueasstring(map);
        system.out.println(json);
        //输出结果: {"id":"1655876612393566210"}
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com