`

java JSONObject序列化包含Date类型数据的Java对象

    博客分类:
  • java
 
阅读更多
如果Date.class无法进行转换则使用Timestamp.class

jackson进行转换Date时需要加如下代码
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;


问题场景
在Java里面,会遇到这样的问题:数据库中存在TIMESTAMP类型的数据,这样Bean对象里面就会有Date(java.util.Date)类型参数,我们使用JSONObject将对象序列化的时候,会发现Date属性被分隔成年、月、日、时、分、秒等子对象了,这肯定不符合我们的期望。

解决方案

使用json-lib包提供的JsonConfig可以在处理Java对象和Json互转时过滤属性值,具体的方案如下:

创建日期处理器类
利用SimpleDateFormat将Date类型的数据format一下,该类实现了JsonValueProcessor接口。

public class JsonDateValueProcessor implements JsonValueProcessor {

    private String format = "yyyy-MM-dd HH:mm:ss";

    public JsonDateValueProcessor() {
        super();
    }

    public JsonDateValueProcessor(String format) { // 自己需要的格式
        super();
        this.format = format;
    }

    @Override
    public Object processArrayValue(Object value, JsonConfig paramJsonConfig) {
        return process(value);
    }

    @Override
    public Object processObjectValue(String key, Object value, JsonConfig paramJsonConfig) {
        return process(value);
    }

    private Object process(Object value) {
        if (value instanceof Date) {
            SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINA);
            return sdf.format(value);
        }
        return value == null ? "" : value.toString();
    }
}




处理单个bean
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
// 如果Date.class无法进行转换则使用Timestamp.class
JSONObject json = new JSONObject();  
json.fromObject(object, jsonConfig)  


处理beanList
List<Object> objects = new ArrayList<>();
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
JSONArray taskArray = JSONArray.fromObject(objects, jsonConfig);


处理map
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
JSONObject json = new JSONObject();
json.putAll(Map, jsonConfig);















分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JSON序列化与反序列化JAVA工具

    10万次序列化,1万次反序列化,毫秒。 阿里序列化时间 1229 1133 1179 阿里反序列化时间 478 523 466 HZS序列化时间 1089 998 1010 HZS反序列化时间 606 623 635 测试代码如下: { org.hzs.json.JSONObject bjson...

    java.util.Date到Json日期

    本篇文章将详细介绍如何将`java.util.Date`对象转换为符合特定格式的JSON字符串,从而实现更加标准化的数据交换。 #### 一、问题背景与目标 在Java中,`java.util.Date`类用于表示具体的时间点,它包含了毫秒级别...

    JSON序列化及反序列化工具

    10万次序列化,1万次反序列化,毫秒。 阿里序列化时间 1122 1054 1115 阿里反序列化时间 409 423 412 HZS序列化时间 884 864 880 HZS反序列化时间 392 375 394 JAVA7版已经逼近阿里的速度,JAVA8版利用了闭包技术...

    jsonObject

    这通常用于序列化复杂的对象结构。 ```java MyBean bean = new MyBean(); bean.setId("001"); bean.setName("п"); bean.setDate(new Date()); // ... set other properties ... JSONObject jsonObject = ...

    將JAVA數據類型轉換Json對象是日期類的處理

    在Java编程中,将数据类型转换为JSON对象是一项常见的任务,特别是在处理Web服务或与前端交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。这...

    JSON 转化为java对象

    而在返回数据时,则需要将 Java 对象序列化为 JSON 格式发送给前端。 **总结** 本文详细介绍了 JSON 转化为 Java 对象的方法,包括使用第三方库和自定义转换器的方式。此外,还通过示例代码展示了具体的实现细节。...

    java利用json-lib操作json

    总结起来,json-lib库为Java开发者提供了一种简单易用的方式来处理JSON数据,包括将Java对象转换为JSON格式,以及从JSON反序列化回Java对象。这对于进行Web服务开发或者需要与JSON格式数据交互的项目来说,是一个...

    Java和Json互转的工具类

    键是字符串,值可以是各种数据类型,如字符串、数字、布尔值、数组、对象等。例如: ```json { "name": "John", "age": 30, "city": ["New York", "San Francisco"] } ``` 在Java中,处理JSON数据通常需要借助...

    gson-2.8.6.jar下载

    4. 支持基本数据类型及其封装类型,Collection类型,Date类型及自定义类型。 5. 支持将JSON数组转换为Java数组或List,支持泛型。 6. 支持将Java的Map转换为JSONObject以及相反的转换。 7. 支持将null值和空值转换为...

    java处理JSON

    为了将`Date`对象正确地序列化和反序列化,需要自定义`JsonValueProcessor`,如`DateJsonValueProcessor`,这个类可以定义日期的转换规则。 5. **遍历JSON对象**:`JSONObject`提供了一个`keys()`方法,返回一个...

    java-json开发包

    其主要结构包括对象(键值对)和数组(有序集合),通过键值对存储数据,数组存储多个值。 2. **Java中的JSON处理** 在Java中,处理JSON通常需要使用第三方库,如`org.json`或`com.google.gson`等。这些库提供了...

    json-lib-2.4-jdk15包含依赖JAR包

    2. **序列化与反序列化**:将Java对象序列化为JSON字符串存储,或者从JSON字符串反序列化回Java对象,便于数据持久化或在网络间传递。 3. **API接口开发**:在开发RESTful API时,JSON是最常见的数据交换格式,`...

    Java开发,JSON需要的jar

    这个库支持多种Java集合和类型,包括Map、List、Set、Date等。JSON Lib也支持Eclipse的动态类加载,使得它可以处理那些在运行时才知道类名的对象。`-jdk15`表示这个版本兼容Java 1.5,对于较旧的Java环境来说很有用...

    ObjectCollectionJSON之间的转换

    在Java编程中,Object、Collection和JSON之间的转换是常见的需求,特别是在数据交换和序列化过程中。这些类型之间的转换有助于在应用程序的不同部分之间传递和存储数据。以下是对这些转换的详细说明,以及涉及到的...

    json创建和解析 java

    - JSON不支持Java中的所有数据类型,如`Date`、`BigDecimal`等,需要进行适当的转换。 - 在序列化和反序列化过程中,Java对象的属性名和JSON键需要匹配,除非你配置了映射规则。 6. **性能比较** 各个库在性能...

    json-lib-2.3-jdk15-sources javadoc .jar

    JSON-lib是一个Java库,它提供了将Java对象转换为JSON表示以及从JSON文本反序列化回Java对象的功能。该库的版本是2.3,针对JDK 15进行了优化。"json-lib-2.3-jdk15-sources.jar"文件包含了该库的源代码,这对于...

    json所必需的jar

    // 反序列化回Person对象 ``` 此外,还有`org.json.simple`库,其JAR文件名为`json-simple-*.jar`。这个库提供了一个简单的API来处理JSON,适合小型项目或学习使用: ```java import org.json.simple.JSONObject;...

    json转换工具,支持日期

    3. `SqlDateProcessor.java`和`UtilDateProcessor.java`: 这两个类与`TimestampProcessor`类似,分别处理`java.sql.Date`和`java.util.Date`类型。由于这些日期类型在JSON中表示方式的不同,自定义处理器可以确保...

    json-lib源码放出

    通过深入研究`json-lib`的源码,你可以了解JSON与Java对象之间的转换机制,学习如何优化性能,以及如何处理数据序列化和反序列化的异常情况。这对于提升你的Java编程技能,尤其是处理JSON数据的能力大有裨益。同时,...

    json.jar扩展包

    这个扩展包包含了处理JSON数据所需的所有类和方法,允许开发者在Java应用中方便地序列化和反序列化JSON对象。当你下载并解压`json.jar`文件后,将其导入到你的Java项目中,便能利用其提供的功能来处理JSON数据。 ...

Global site tag (gtag.js) - Google Analytics