把返回的json 集合中,有关时间类型的字段,转化为指定格式的的字段

4 篇文章 0 订阅

1 在项目开发的工程中,有的实体bean 中,会包含java.util.Date这个类型的字段,在我们返回的json 集合中,如果包括这样的实体,时间类型的字段,默认是返回这样的格式,{"nanos":0,"time":-27076233600000,"minutes":0,"seconds":0,"hours":0,"month":11,"timezoneOffset":-480,"year":-789,"day":5,"date":22},如果返回这样的格式,非常晦涩难懂,怎么才能返回成指定的格式呢?下面将为大家一一说明

2 首先 我们新建一个,时间转化器工具类,时间转换器工具类的作用,将返回的json数据中的日期格式转换为指定格式。

3 新建一个时间转换器工具类   JsonDateValueProcessorUtil,代码如下。

      public class JsonDateValueProcessorUtil implements JsonValueProcessor {
    private String format ="yyyy-MM-dd HH:mm:ss";
 
    public JsonDateValueProcessorUtil() {
        super();
    }
 
    public JsonDateValueProcessorUtil(String format) {
        super();
        this.format = format;
    }
 
    @Override
    public Object processArrayValue(Object paramObject,
                                    JsonConfig paramJsonConfig) {
        return process(paramObject);
    }
 
    @Override
    public Object processObjectValue(String paramString, Object paramObject,
                                     JsonConfig paramJsonConfig) {
        return process(paramObject);
    }
 
 
    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();
    }
}

4 下面一段代码  将集合中的时间转化为指定的格式

          dataMap = busAssignService.getBusAssignUnclaimedPage(userId, pageUtil);
   List<Map<String ,Object>> list=dataMap.getDatas();//得到list集合数据
   //处理时间
   JsonConfig jsonConfig = new JsonConfig();                                                         
   jsonConfig.registerJsonValueProcessor(Timestamp.class, new JsonDateValueProcessorUtil());              
   JSONArray array = JSONArray.fromObject(dataMap.getDatas(),jsonConfig);
    这样返回的集合中,有关时间的格式,就转化为我们指定的格式 yyyy-MM-dd HH:mm:ss

要将 JSON 集合转换为 Java 对象,你可以使用 JSON 解析库,比如 Jackson、Gson 或者 Fastjson。下面是使用 Jackson 库实现的示例代码: 首先,确保你已经添加了 Jackson 库的依赖。 ```java import com.fasterxml.jackson.databind.ObjectMapper; // 定义一个 POJO 类,用于映射 JSON 的数据 class MyObject { private String name; private int age; // 添加默认构造方法和 getter/setter 方法 // 必须有一个无参构造方法 public MyObject() {} // getter/setter 方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class Main { public static void main(String[] args) { String json = "{\"name\":\"John\", \"age\":30}"; try { ObjectMapper objectMapper = new ObjectMapper(); MyObject myObject = objectMapper.readValue(json, MyObject.class); System.out.println("Name: " + myObject.getName()); System.out.println("Age: " + myObject.getAge()); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码,我们首先定义了一个 POJO 类 `MyObject`,用于映射 JSON 的数据。然后使用 `ObjectMapper` 类的 `readValue()` 方法将 JSON 字符串转换为 Java 对象。最后,我们可以通过对象的 getter 方法获取转换后的数据。 请注意,为了成功地将 JSON 转换为 Java 对象,POJO 类需要具有与 JSON 字段对应的属性和 getter/setter 方法。还需要提供一个无参构造方法。 你可以根据实际情况调整代码,使其适应你的 JSON 数据结构和需要映射的 Java 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值