zoukankan      html  css  js  c++  java
  • net.sf.json.JSONObject对时间戳的格式化处理

    1.问题

    应用A向应用B发起HTTP请求获取数据,数据中包含日期格式的属性Time。应用B在返回数据给应用A之前对日期Time进行了格式化,转换成了时间戳。假设Time格式化前为‘2020-11-08 00:22:35’,对应的时间戳为‘1468905’。发现应用A接收到数据后Time的值确实是‘1468905’,然而应用A在对数据进行格式化后发现Time却不是‘2020-11-08 00:22:35‘,而是服务器当前时间!

    2.排查

    首先确定了日期转换为时间戳没有错误,问题出在了格式化工具上——net.sf.json.JSONObject。

    通过Debug发现,应用A对接收到的数据进行格式化的时候,对于属性Time接收到的类型是Long,而期望的类型是Date。实际类型与期望类型不符合,判断为真:

    if (!targetType.isInstance(value)) {
    setProperty(bean, key, morphPropertyValue(key, value, type, targetType), jsonConfig);
    }

    在morphPropertyValue方法中意图利用反射从Long类型的Class中找到date属性,然后将时间戳赋给date......

    //sourceBean:就是Long类型的时间戳
    //name:意图寻找到date属性
    PropertyDescriptor sourcePd = PropertyUtils.getPropertyDescriptor(sourceBean, name);

    结果可想而知,它死活找不到。最后返回服务器当前时间......

    3.解决

    不去拷贝屎前代码;

    用FastJSON。

  • 相关阅读:
    node.js的安装
    简单创建数据库和表
    layui后台框架的搭建
    FlagsAttribute属性在enum中的应用 [转]
    递归页面
    AspNet2.0页面生命周期 [转]
    C#基础概念二十五问[转]
    md5加密方法
    ASP.NET中Cookie编程的基础知识 [转]
    说说“数据库的自动安装、升级” [转]
  • 原文地址:https://www.cnblogs.com/monument/p/13944882.html
Copyright © 2011-2022 走看看