json时间转化问题

10时间存入数据库以及前后端时间转化 https://www.cnblogs.com/heganlin/p/6074485.html https://www.cnblogs.com/shawWey/p/8079244.html date:只有日期,没有时间,2016-09-21; time:只有时间,没有日期,23:42:31; datetime:日期时间都有,2016-09-21 23:42:31 。 timesta... 阅读详情

使用的序列化工具类为jackson,

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
import org.codehaus.jackson.type.TypeReference;

/**
 * Json转换的工具类 2013-03-26
 */
@SuppressWarnings({ "unchecked", "deprecation" })
public class JsonUtil {

    private final static Log LOG = LogFactory.getLog(JsonUtil.class);

    private final static ObjectMapper OBJECT_MAPPER = new ObjectMapper(); // 新版 simleFactory 二进制,高性能

    /**
     * 空参数构造器
     */
    private JsonUtil() {
    }

    /**
     * 静态块初始化
     */
    static {
        // 设置输出包含的属性
        OBJECT_MAPPER.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);
        // 设置输入时忽略JSON字符串中存在而Java对象实际没有的属性
        OBJECT_MAPPER.getDeserializationConfig().set(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        OBJECT_MAPPER.getSerializationConfig().setDateFormat(df);
        OBJECT_MAPPER.getDeserializationConfig().setDateFormat(df);
    }

    /**
     * 如果JSON字符串为Null或"null"字符串,返回Null. 如果JSON字符串为"[]",返回空集合.
     * 
     * @param jsonString
     * @param clazz
     */
    public static <T> T fromJson(String jsonString, Class<T> clazz) {
        if (StringUtils.isBlank(jsonString)) {
            return null;
        }
        try {
            return (T) OBJECT_MAPPER.readValue(jsonString, clazz);
        } catch (IOException e) {
            LOG.error("parse json string error:" + jsonString, e);
        }
        return null;
    }

    /**
     * 读取集合如List/Map,且不是List<String>时.
     * 
     * @param jsonString
     * @param typeReference
     * @return
     */
    public static <T> T fromJson(String jsonString, TypeReference<T> typeReference) {
        if (StringUtils.isBlank(jsonString)) {
            return null;
        }
        try {
            return (T) OBJECT_MAPPER.readValue(jsonString, typeReference);
        } catch (IOException e) {
            LOG.error("parse json string error:" + jsonString, e);
        }
        return null;
    }

    /**
     * 如果对象为Null,返回"null". 如果集合为空集合,返回"[]".
     */
    public static String toJson(Object object) {
        try {
            return OBJECT_MAPPER.writeValueAsString(object);
        } catch (IOException e) {
            LOG.warn("write to json string error:" + object, e);
        }
        return null;
    }

    /**
     * 取出Mapper做进一步的设置或使用其他序列化API.
     */
    public static ObjectMapper getMapper() {
        return OBJECT_MAPPER;
    }

    public static void main(String[] args) {
        Date tim = new Date();
        System.out.println(tim);
        String timStr = tim.toString();
        System.out.println(timStr);

        Date dat = fromJson(timStr, Date.class);
        System.out.println(dat);

        System.out.println(toJson(tim));
        JsonUtil j = new JsonUtil();
        timTest t = j.new timTest();
        t.setName("123");
        t.setTime(new Date());
        System.out.println(toJson(t));

        String js = "{\"name\":\"123\",\"time\":\"2015-07-20 18:06:16\"}";
        String jso = "{\"name\":\"123\",\"time\":\"Mon Jul 20 18:06:16 GMT+08:00 2015\"}";
        timTest rigth = fromJson(js, timTest.class);
        timTest wrong = fromJson(jso, timTest.class);
        System.out.println(rigth.getTime());
        System.out.println(wrong.getTime());

    }

    class timTest {

        private String name;

        private Date time;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Date getTime() {
            return time;
        }

        public void setTime(Date time) {
            this.time = time;
        }

    }
}


1.  遇到的问题,反序列化时间时报异常:

      java.text.ParseException: Unparseable date: "Mon Jul 20 15:34:58 GMT+08:00 2015"

2. 问题分析:

  2.1  程序中使用的时间格式化为:

          DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

   2.2 需要反序列化的内容为:

        { "_id" : "15", "contentAbstract" : "第一个话题测试", "belongSubjectId" : "1", "yn" : "1", "creatTime" : "Mon Jul 20 15:34:58 GMT+08:00 2015" }

         其中的时间格式为:Mon Jul 20 15:34:58 GMT+08:00 2015

  2.3 问题定位:

        反序列化的时间格式和预期的格式不一致导致出现异常。预期的格式为:yyyy-MM-dd HH:mm:ss;实际的格式为:Mon Jul 20 15:34:58 GMT+08:00 2015

3.  解决问题:

  3.1  问题的解决关键点:

        将格式调整为一致的格式,即可。

  3.2  解决步骤:

         方法一:将数据库中的内容的时间格式,进行调整。这个需要注意:写入数据库的程序也要调整,在写库前对时间进行格式化(这个可以在程序中将时间转化为String

                          也可以使用封装好的工具如:ibatis,这些工具会根据数据库定义语言的时间格式,将程序的中的时间转为对应的格式)

        方法二:修改jsonutil的时间格式。不推荐,会引起其他副作用;因为使用jsonutil的地方很多,会引入更多bug

  3.3 注意事项:

          在对时间序列化时,如果存入的字符串也用jsonutil进行序列化,那么json会自动把时间格式化为设置的格式yyyy-MM-dd HH:mm:ss;取出字符串进行反序列化就没有问题了。

          尽量避免在写入时使用一套格式时间的方式,取出数据时使用另外一种格式化方式。


Python3.8下MvCameraControl.dll加载失败?3种方法彻底解决FileNotFoundError 本文针对Python3.8及以上版本在Windows平台调用MvCameraControl.dll时出现的FileNotFoundError问题,深入剖析了其根源在于Python 3.8引入的DLL加载安全机制变更。文章提供了三种核心解决方案:显式指定DLL完整路径、使用os.add_dll_directory()添加可信目录,以及利用ctypes的winmode参数进行精细控制,并给出了工程化封装建议,帮助开发者彻底解决此兼容性问题。 阅读详情

相关推荐

嵌入式开发必备:手把手教你用DB-9连接器搞定RS-232串口通信(附万用表测试技巧)

本文详细解析了嵌入式开发中RS-232串口通信的硬件连接核心。从DB-9连接器的引脚定义入手,深入讲解DTE与DCE设备角色,明确直连线与交叉线的选择法则,并重点分享了使用万用表进行线缆连通性测试、电压测量及故障诊断的实战技巧,帮助开发者彻底掌握串口通信的硬件连接与排查方法。

tgb345678的博客 1164

java日期格式化为json字符串,看这个就够了

java日期格式化为json字符串,看这个就够了。 不管是入参还是返参,原理都是一样的。 /** * json格式化注解 * 1,pattern是转化成json的格式, * 如果是入参,则把pattern格式的字符串转换成时间对象payTime。 * 如果是返参,则把时间对象payTime转换成pattern格式的字符串。 * * 2,只能处理pattern格式的字符串/只能转化成pattern格式的字符串 * "payTime...

reggergdsg的博客 2477

别再为H桥烧MOS管发愁了!手把手教你用IR2104搭建稳定电机驱动(附自举电路详解)

本文详细解析了使用IR2104半桥驱动芯片构建高可靠H桥电机驱动电路的全过程。从芯片内部架构、自举电路原理到PCB布局技巧和实战调试方法,帮助工程师彻底解决MOS管烧毁问题。重点讲解了自举电容选型、死区时间控制等关键设计要点,并附有示波器实测波形分析,是电机驱动设计的实用指南。

我的博客 739

JSONUtil.toJsonStr 时间变成了时间戳

我的接口是以`Date`来接收日期的,然后我在拿到这个对象参数后,通过`hutool`当中的`JSONUtil.toJsonStr`将其序列化成json字符串,然后存储到数据库。然后存储到数据库当中发现这个字段是时间戳。

怪咖@的博客 6673

FSMC驱动LCD显示屏学习2

液晶显示器,简称 LCD(Liquid Crystal Display)相对于上一代 CRT 显示器 (阴极射线管显示器),LCD显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分 子排列却和固体晶体一样非常规则,因此取名液晶。

usjjjsj的博客 1695

基于分数阶傅里叶变换的chirp信号检测与参数估计(原理附代码)

线性调频信号(chirp信号) 顾名思义,该信号的频率随着时间线性变换,其复数表达形式如下: s(t)=e2jπ(f0t+0.5μt2)s(t)=e^{2j\pi(f_0 t+ 0.5\mu t^2)}s(t)=e2jπ(f0​t+0.5μt2) 根据欧拉公式,其相位项为2π(f0t+0.5μt2))2\pi(f_0 t+ 0.5\mu t^2))2π(f0​t+0.5μt2))。信号的角频率是相位对时间的导数。对相位求导后有2π(f0+μt)2\pi(f_0+\mu t)2π(f0​+μt),显然,f0f

weixin_42845306的博客 1万+

Hutool日期工具使用 转换格式

hutool日期工具类

m0_64686583的博客 3540

【纯血鸿蒙】安装hdc工具

参考资料:

oh.K 5545

【 JSONObject.parseObject 时间转换问题】我们使用 JSONObject.parseObject时候发现时间被转成了时间戳,如何能正确转成需要的时间格式?

2. 或者在 实体类 字段名称上。1. 我们使用这个方法即可。

cx19910829的专栏 5801

【Unity】Spine动态换装进阶:SkeletonGraphic插槽级皮肤切换与内存优化

本文深入探讨了Unity中Spine动态换装的进阶技术,重点解析了SkeletonGraphic插槽级皮肤切换的实现原理与内存优化策略。通过代码示例展示了如何高效管理皮肤实例、避免内存泄漏,并提供了对象池、纹理合并等性能优化方案,帮助开发者提升2D角色换装系统的运行效率与稳定性。

food6的博客 196

Win11家庭版彻底关闭Hyper-V的3种方法(实测有效)

本文详细介绍了Win11家庭版彻底关闭Hyper-V的3种实测有效方法,解决与VMware的兼容性问题。包括命令行禁用虚拟化功能、微软官方工具DG_Readiness深度清理以及组策略与功能组件联用方案,帮助用户高效禁用Hyper-V并优化系统性能。

weixin_33728268的博客 2657

Hutool实现日期时间获取、转换、格式化

Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位。对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式的字符串,方便在输出时的调用,提供了众多便捷的方法对日期对象操作。

林夕 5958

Android功耗系列专题理论之十三:MTK平台待机功耗问题分析方法

摘要:本文详细分析了MTK平台待机功耗问题的调试方法,重点介绍了SPM电源管理机制、26M时钟控制逻辑以及系统深睡眠状态的判断标准。文章提供了完整的Debug流程,包括日志抓取、唤醒源分析、SCP睡眠状态检查以及时钟/LDO状态排查等实用技巧,并给出硬件漏电点和软件配置异常的排查方案。针对不同模块(Modem/Conn/SSPM等)提供了具体的电源管理绕过命令,适用于功耗问题调试和低功耗模式验证场景。

559

关于Json格式中时间格式转化问题

如果不经转化修改,一般情况下json时间格式一般是如下格式:Date(1436595149269)通常我们用ajax获取下来的json数据,如果有时间,都是这种格式.其中的数字表示的是1970年1月1日至今的毫秒数.

Anxiaolu的博客 5076

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

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

解析Json中时间类型转化的问题

页面上Json中时间处理,时间戳,datetime,String类型

luobw的博客 5941

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

日期时间格式在后端时间戳转化成前端JSON的时候,格式转换问题(在前端页面显示的时间中间携带了一个字母T)

3.因为前端展示的数据是JSON格式的,因此可以使用@JsonFormat这个注解去解析,按照我们需要的格式去展示。4.这时候时间格式就是我们想要的啦。1.这个是后端接口返回的数据。2.这种是前端要求的展示格式。

jjjvg的博客 336

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

fastjson对象转为json字符串日期格式变为时间戳问题

今天尝试将map集合转为json对象时遇到一个问题。map中的value为日期格式如"2019-03-01",在使用 JSONObject.toJSON(map).toString() 转换后的value变成了时间戳,显示出来很不友好。后来翻阅fastjson的API发现有个方法可以将对象中的时间格式不转化为时间戳的方法 JSON.toJSONStringWithDateFormat(O...

qq_39481762的博客 2万+

对象转化成JSON格式后时间格式变成时间戳处理

第一反应是谁改了框架的时间格式(因为代码都是自己写自己维护的,不存在别人动我代码,改我参数类型的情况),我用的LocalDateTime类型,看了框架没有变更,于是开始排查问题。小编在实现功能的时候遇到一个奇葩问题,对象转化成JSON后刚开始没啥问题,过两天后JSON中的时间格式莫名变成了时间戳,因为之前遇到过类似的。debug看到的数据没有问题,打算日志打印的日期格式就变成了时间戳了,于是问题定位到对象转化JSON这里。最后网上看到该问题的解决办法,然后问题得到完美解决。在此记录防止下次再犯。

weixin_56772904的博客 1033

项目总结44:SpringBoot接口时间数据Json格式转化异常MappingJackson2HttpMessageConverter

项目总结44:SpringBoot接口时间数据Json格式转化异常MappingJackson2HttpMessageConverter

weixin_46020146的博客 263

golang结构体json的时间格式化解决方案

最近开发项目时候发现一个结构体的Json转换的时间格式问题。 即这种2019-07-01T20:08:23.000000028+08:00 这种表示UTC方法。从我们习惯来说,更喜欢希望的是 2019-07-01 20:08:23这种格式。 重新复现代码如下: 通过time.Time类型别名 ...

chigaitan9729的博客 2286

(8)JSON

JSON是一种轻量级的数据交换格式,易于人类阅读和编写,同时也便于机器解析和生成。它采用完全独立于编程语言的文本格式,但也使用了类似于C语言家族的约定。JSON是数据表示的理想选择,尤其在网络传输和存储过程中。(百度来的)要我的话说就是,他就是个字符串;一句话概括;josn就是js对象的字符串表示法。JavaScript Object Notation,这是他的全称很显然他和JavaScript有着密不可分的关系,可以说他就是用来储存JavaScript对象的一种语言;这就是经典的json语言格式。

K1763540的博客 982

日期被转成json数据后变成时间戳了

将查出来的list集合转成json数据发送到jsp页面的时候时候,发现时间数据变成时间戳了,后面搜了一下,kan'看到一个方法很实用,原文:https://blog.csdn.net/qq_26692575/article/details/84029853, 直接在javaBean中的日期属性加fastJson提供的格式化注解 问题即可解决 @JSONField(format = "...

chenmaolin928的博客 1万+

解决JSON中文乱码以及JSON处理Date格式

如果出现乱码,我们需要设置他的编码格式为utf-8,以及它返回的类型,通过@RequesMapping的produces属性来实现,代码如下。出现这个错误是因为jackson依赖和springboot依赖版本有冲突,把jsckson的依赖版本从2.9.8换成 2.11.0即可。发现问题:时间默认返回的json字符串变成了时间戳类型的格式 Timestamp 1644327387386。注意观察JSONDateUtil.JSONFormatDateUtil()的参数列表和返回的格式。使用工具类和公共方法。

weixin_61415240的博客 6461

解决时间戳带来的问题

开发工具与关键技术:VS/MVC 作者:何桂朋 撰写时间:2019年5月25日 之前,我做项目的时候,遇到一个问题就是在控制器中“好端端”的时间格式 但是传递到视图时,变成了OrderTime = “/Date(1558534200000)/”; 其实中间那串数字就是时间戳。我怀疑:DataTime类型,不能直接通过Josn, 所以才转化时间戳,或者DataTime本身是时间戳。 关于Unix时...

weixin_44550157的博客 4351

将mongoDB数据转化为json---Python实现

前提背景 我们知道,mongoDB数据库表中的一条数据(document)在呈现的时候,很像json。在平时的使用中,有时候会有这样的需求:我们需要将数据库中的数据读出来,并将其传送(例如ajax请求)到前端页面去解析呈现。显然此时,为了更容易解析,我们需要将数据转为为json形式。 mongoengine作为一个操作mongoDB数据库的python解析库,其在将表中的数据转化为js...

xiaobai_ol的博客 1万+

Java 关于JSON序列化时LocalDate字段格式问题

Java 关于JSON序列化时LocalDate字段格式问题

qq_36636312的博客 339
上一篇: jquery ajax参数加点号状态200进error
下一篇: ajax请求不等服务器返回直接进入error
subuser
博客等级 码龄19年 31粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值