fastjson对Date的处理

fastjson序列化时间自定义格式 我回头就是一句xxx,情绪发泄完该做的事咱也得做不是,下面就看看怎么处理这个问题。首先建一个项目,添加依赖。方法,可以设置不同的类型使用不同的序列化器,所以我们可以通过给日期类型设置自定义的序列化器来实现自定义日期格式。这不,跟另一个部门做对接,人家说你发过来的时间怎么带个。序列化方法,发现可以传个配置对象,看看这个能不能解决问题。自定义序列化器并重写序列化方法,这里只针对。类型进行了自定义,其他类型如出一辙。没有了,变成了自定义的格式,搞定!写个带有时间属性的类,就叫。浏览器调用接口,看下结果。 阅读详情

对日期的序列化:(http://yidao620c.iteye.com/blog/2036853)

一种方法是通过注解

Java代码   收藏代码
  1. @JSONField (format="yyyy-MM-dd HH:mm:ss")  
  2. public Date birthday;  

另一种是通过SerializeConfig:

Java代码   收藏代码
  1. private static SerializeConfig mapping = new SerializeConfig();  
  2. private static String dateFormat;  
  3. static {  
  4.     dateFormat = "yyyy-MM-dd HH:mm:ss";  
  5.     mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));  
  6. }  

 

json字符串中使用单引号:

String text = JSON.toJSONString(object, SerializerFeature.UseSingleQuotes);

 

字段显示不同的key:

 

Java代码   收藏代码
  1. public class User {  
  2.     @JSONField(name="ID")  
  3.     public int getId() { ... }  
  4. }  
  5.    
  6. User user = ...;  
  7. JSON.toJSONString(user); // {"ID":001}  

 

类的反序列化 JavaBean:

 

Java代码   收藏代码
  1. String text = ...; // {"r":255,"g":0,"b":0,"alpha":255}  
  2. Color color = JSON.parseObject(text, Color.class);  

 

数组:

 

Java代码   收藏代码
  1. String text = ...; // [{ ... }, { ... }]  
  2. List<User> users = JSON.parseArray(text, User.class);  

 

泛型:

Java代码   收藏代码
  1. String text = ...; // {"name":{"name":"ljw",age:18}}  
  2. Map<String, User> userMap = JSON.parseObject(text, new TypeReference<Map<String, User>>() {});  

 

自定义序列化代码示例:

 

Java代码   收藏代码
  1. public class JsonUtil {  
  2.     private static SerializeConfig mapping = new SerializeConfig();  
  3.     private static String dateFormat;  
  4.     static {  
  5.         dateFormat = "yyyy-MM-dd HH:mm:ss";  
  6.     }  
  7.   
  8.     /** 
  9.      * 默认的处理时间 
  10.      *  
  11.      * @param jsonText 
  12.      * @return 
  13.      */  
  14.     public static String toJSON(Object jsonText) {  
  15.         return JSON.toJSONString(jsonText,  
  16.                 SerializerFeature.WriteDateUseDateFormat);  
  17.     }  
  18.   
  19.     /** 
  20.      * 自定义时间格式 
  21.      *  
  22.      * @param jsonText 
  23.      * @return 
  24.      */  
  25.     public static String toJSON(String dateFormat, String jsonText) {  
  26.         mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));  
  27.         return JSON.toJSONString(jsonText, mapping);  
  28.     }  
  29. }  

 

自定义反序列化示例:

先自定义一个日期解析类:

Java代码   收藏代码
  1. public class MyDateFormatDeserializer extends DateFormatDeserializer {  
  2.   
  3.         private String myFormat;  
  4.   
  5.         public MyDateFormatDeserializer(String myFormat) {  
  6.             super();  
  7.             this.myFormat = myFormat;  
  8.         }  
  9.   
  10.         @Override  
  11.         protected <Date> Date cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object val) {  
  12.             if (myFormat == null) {  
  13.                 return null;  
  14.             }  
  15.             if (val instanceof String) {  
  16.                 String strVal = (String) val;  
  17.                 if (strVal.length() == 0) {  
  18.                     return null;  
  19.                 }  
  20.   
  21.                 try {  
  22.                     return (Date) new SimpleDateFormat(myFormat).parse((String)val);  
  23.                 } catch (ParseException e) {  
  24.                     throw new JSONException("parse error");  
  25.                 }  
  26.             }  
  27.             throw new JSONException("parse error");  
  28.         }  
  29.     }  

 

Java代码   收藏代码
  1. public class User {  
  2.   
  3.     public String name;  
  4.     public int height;  
  5.   
  6.     @JSONField(name = "com-google-com")  
  7.     public void setName(String name) {  
  8.         this.name = name;  
  9.     }  
  10.   
  11.     @JSONField(format = "yyyy-MM/dd HH:mm:ss")  
  12.     public Date birthday;  
  13. }  

 

测试下:

Java代码   收藏代码
  1. /** 
  2.  * @param args 
  3.  * @throws IOException 
  4.  */  
  5. public static void main(String[] args) throws IOException, ParseException {  
  6.   
  7.     String json = "{\"name\":\"22323\", \"age\": 1234," +  
  8.             " \"birthday\": \"2012-12/12 12:12:12\"}";  
  9.     Test t = JSON.parseObject(json, Test.class, mapping,  
  10.             JSON.DEFAULT_PARSER_FEATURE, new Feature[0]);  
  11.     System.out.println(t.name);  
  12.     System.out.println(t.height);  
  13.     System.out.println(t.birthday);  
  14.     System.out.println(  
  15.             new SimpleDateFormat("yyyy-MM/dd HH:mm:ss").parse("2012-12/12 12:12:12"));  
  16. }  

 

总结:对于JSONField注解,好像只对序列号的格式有影响,反序列化不管这个,不知道为什么,只能自己写个解析类了,不过这样就更灵活了,可以在里面写很多处理逻辑,比如json字符串里面日期格式并不是标准格式的时候,就可以先转成标准格式再去解析了。

 

另外,fastjson的document官网一直打不开,不知道神马原因,难道被feng了麽:

http://code.alibabatech.com/wiki/display/FastJSON/Documentation

 

 

Fastjson针对日期的序列化 Fastjson针对日期的序列化 FastJson由于版本不同,可能会对自己项目包中的日期格式不支持序列化,所以这时候就需要我们自己来进行日期的序列化 FastJson 1.2.53之前的包不支持joda日期库,如果使用低版本的FastJson,又想进行日期的序列化,首先需要创建一个Bean import org.joda.time.DateTime; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba. 阅读详情

相关推荐

SpringBoot中使用fastjson进行序列化与反序列对象时间的格式处理

SpringBoot+Websocket实现聊天室功能,前端发送json字符串到后台,后台反序列化json字符串为对象,并赋值发送时间字段。后台将时间存储进数据库,并序列化对象为json字符串群发给所有客户端。群发的客户端消息json串中时间为格式化之后的时间格式,不是时间戳格式。引入fastjson依赖在mysql数据库中设计时间字段时为datetime类型。注:博客:关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。

BADAO_LIUMANG_QIZHI的博客 3158

fastJson的配置时间序列化格式

fastJson的配置时间格式化,如果在config中配置的话,所有的bean都会统一格式,有的项目灵活格式。 1.JSONObject.DEFFAULT_DATE_FORMAT="yyyy-MM-dd";//设置日期格式 2.JSONObject.toJSONString(resultMap, SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.Wr

long8723710的博客 6436

Unity 2021 LTS安装避坑指南:从下载到第一个3D项目的完整流程

本文提供了一份详尽的Unity 2021 LTS安装与首个3D项目创建指南。内容涵盖从Unity Hub下载、版本选择、模块安装避坑,到编辑器界面解析、创建旋转立方体脚本的完整流程,旨在帮助初学者快速搭建稳定开发环境并上手核心操作。

mango的博客 308

解决FastJson序列化后Date日期变成时间戳问题

以上可以看到通过FastJson序列化后变成时间戳。

少爷晚安 2835

散户逆袭神器:用通达信DIY指数发现下一个光伏储能(附龙头股筛选模板)

本文详细介绍了如何利用通达信软件的自定义指数功能,构建个人专属的行业监控工具,以发现类似光伏储能这样的潜力赛道。文章提供了从零开始的指数编制步骤、核心的龙头股筛选模板,以及五个关键的数据校验技巧,帮助散户投资者实现机构级的行业分析与机会挖掘,有效提升投资决策能力。

w3x4y的博客 482

Palantir解密:“本体”的建模逻辑及其扩展方向

上一篇重点从对现实世界建模的角度探讨了“本体”在数字化架构中的核心意义。这里借Palantir的“本体”概念、解析Palantir只是起点,目标旨在以他山之石攻玉——探索数字世界的底层架构逻辑,最终为构建自主体系提供思考。Palantir以“本体论”为核心的建模方案是否代表终极答案,不宜过早下结论,但其思路值得深入剖析。

SZSDQJC的博客 2632

fastjson 对于 Date 类型的处理

前言 在使用 fastjson 存储 json 对象时,发现其将 date 类型的 value 默认转换成了 long 类型的时间戳。 那么怎么解决这个问题? 代码如下 private static SerializeConfig mapping = new SerializeConfig(); private static String dateFormat; static { dat...

wjavadog的博客 2150

目标检测基础

目标检测是计算机视觉的核心任务,需同时对图像中的物体进行定位与识别。传统方法存在速度慢、精度低等问题,而深度学习显著推动了该领域发展,使实时高精度检测成为可能。检测的核心是为每个物体预测边界框坐标和类别标签。为实现高效检测,引入了锚框机制,通过预设多尺度、多宽高比的候选区域,缩小预测偏移量,提升定位精度。训练时,通过计算锚框与真实边界框的交并比 (IoU) 确定正负样本,并基于此生成类别标签和坐标偏移量作为监督信号。该方法提升了检测器对多尺度目标和复杂场景的鲁棒性。

盼小辉丶的博客 2740

fastjson对日期类型的处理(Date,Timestamp)

通过 SerializeConfig 进行转换 import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializeConfig; import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; import lomb...

weixin_40140969的博客 3015

AIGC算法工程师面试八股文深度解析与进阶指南:揭秘Diffusion Models核心原理与实战技巧

总结来说,Cosine Noise Scheduler 的核心优势在于它能够更巧妙地平衡信号和噪声的比例,在扩散过程的早期阶段更长时间地保留原始图像的细节信息,从而为去噪模型提供一个更友好的学习环境,最终带来更优异的生成质量。🚀

FJN110的博客 344

实战案例七:Claude Code 构建完整的 Web 应用

前面的案例大多是单一功能的演示,本章将展示如何使用 Claude Code 从零开始构建一个完整的 Web 应用,涵盖需求分析、架构设计、编码实现、测试部署的全流程。

gaoxiang_120的专栏 581

数据科学团队多样性实践:从理论到技术决策的跨学科协作指南

在人工智能和机器学习领域,团队多样性正从边缘话题转变为影响模型质量的核心要素。传统的数据科学流程往往聚焦于算法优化和性能指标,但同质化团队容易忽视数据偏见、模型可解释性及社会影响等关键问题。其技术价值在于,多元化的视角能够从问题定义阶段就嵌入伦理考量,通过跨学科协作预防算法偏见,而非仅仅事后检测。在应用场景上,这种模式特别适用于智慧城市、公共卫生、金融风控等涉及社会公平的领域,需要计算机科学、统计学、社会科学等多背景人才共同参与。本文以微软研究院夏季学校项目为例,深入剖析了如何通过精心设计的协作机制,让多样

weixin_30940783的博客 377

SOUL.md 人格定制的 7 个高阶技巧:Hermes Agent 精准控制 AI 行为模式

揭示 SOUL.md 的本质是行为契约而非人格设定,介绍7个围绕边界约束的高阶技巧,包括用上下文锚点(INPUT SCOPE/OUTPUT TARGET/CONSTRAINTS)替代角色描述、动态渲染锚点适配CI流程等,显著降低token消耗与人工review耗时。

weixin_42520239的博客 251

springboot 集成fastjson 以及处理Date和json数据的转换

springboot 集成fastjson 以及处理Date和json数据的转换 1.引入fastjson <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version&g...

卖奶茶的程序员的博客 1524

JAVA:Spring Boot3 集成 ShardingSphere 实现数据分库分表

本文介绍了基于Spring Boot和ShardingSphere-JDBC实现分库分表与读写分离的解决方案。针对高并发、大数据量场景下单库单表的性能瓶颈,通过配置ShardingSphere-JDBC实现:1)订单表按user_id和order_id分片到两个库和两张表;2)读写分离,写操作路由至主库,读操作在从库间负载均衡。方案使用Druid连接池优化,支持业务透明,无需修改SQL。

木头 660

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

fastJson对实体类中包含Date类型属性时的处理

如果不做处理的话,放回的json数据中date类型的变量值会以毫秒值的方式输出。 解决方式:在为Date型的的变量上添加@JSONField注解 格式如下: @JSONField(format = “yyyy-MM-dd HH:mm:ss”) private Date endDate; ...

蒋蒋 2908

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

json转bean,Date格式转化处理(fastJson)

业务:json转成实体类,实体中有Date格式,直接转换报错!!! 报错: Exception in thread "main" com.alibaba.fastjson.JSONException: For input string: "2018/11/16 3:06:41" 废话不多说,直接上! json串: {'id':'181116030522211648','sendtime':'2018/11/16 3:06:41'} 实体字段: @JSONField(format = "y

da297368860的博客 812

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

fastjson,将json字符串转成java.util.Map,并对Date类型字段进行格式处理。

阿里的 Fastjson 开源工具是一款非常好用的工具,用于处理json报文非常方便快捷,在这里我给它点个赞。 fastjson中, JSONObject 类有一个函数 getInnerMap() 函数,可以将 json 字符串转成 java.util.Map 对象。 具体案例分析: 1、先创建一个实体类 User 对象。 注意,在User...

dear_Alice_moon的专栏 2797
上一篇: 【已解决】android.content.res.Resources$NotFoundException: String resource ID
下一篇: JSON 之FastJson解析
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值