json中date(JSONObject)引发的血案

本文探讨了在处理JSON时,Date类型转换的问题,包括必须使用long表示日期、与对象结合可能导致数据错误,以及如何正确进行JavaBean与Map之间的转化。文中还提到了使用@JsonInclude(JsonInclude.Include.NON_NULL)注解的重要性,并分享了实用的工具类方法。对于遇到类似问题的开发者,文章提供了关键的解决方案和建议。
摘要由CSDN通过智能技术生成

前言

1、测试bean

1、包含集合的测试bean


package com.hlj.data.res.test;

import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Desc: json测试实体
 * @Author HealerJean
 * @Date 2018/9/25  上午11:10.
 *
 */
@Data
@Accessors(chain = true)
@ApiModel (description = "json测试实体")
public class TsJsonData {
   


    /**
     {"error":"0","msg":"操作成功","data":[{"n_long":"3923600074","n_string":"小当","n_bigDecimal":"5.9000","n_date":"2018-12-13 20:31:04","n_integer":1},{"n_long":"3923600074","n_string":"小当","n_bigDecimal":"5.9000","n_date":"2018-12-13 20:31:04","n_integer":1}]}
     * error : 0
     * msg : 操作成功
     * data : [{"n_long":"3923600074","n_string":"小当","n_bigDecimal":"5.9000","n_date":"2018-12-13 20:31:04","n_integer":1},{"n_long":"3923600074","n_string":"小当","n_bigDecimal":"5.9000","n_date":"2018-12-13 20:31:04","n_integer":1}]
     */

    private String error;
    private String msg;
    private List<DataBean> data;

    @Data
    @Accessors(chain = true)
    public static class DataBean {
   
        /**
         * n_long : 3923600074
         * n_string : name
         * n_bigDecimal : 5.9000
         * n_date : 2018-12-13 20:31:04
         * income_rate : 0.9000
         * n_integer : 1
         */

        private Long n_long;
        private String n_string;
        private BigDecimal n_bigDecimal;
        private Date n_date;
        private Integer n_integer;


    }
}

2、普通Bean


package com.hlj.data.res.test;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 作者 :HealerJean
 * 日期 :2018/12/14  下午7:56.
 * 类描述:
 */
@Data
@Accessors(chain = true)
public class JavaBean implements Serializable {
   

    private Long n_long;
    private String n_string;
    private BigDecimal n_bigDecimal;
    private Date n_date;
    private Integer n_integer;

}


3、不返回null的bean

package com.hlj.data.res.test;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 作者 :HealerJean
 * 日期 :2018/12/28  下午7:36.
 * 类描述:
 */

@Data
@Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IncludeJavaBean {
   

        private Long n_long;
        private String n_string;
        private BigDecimal n_bigDecimal;
        private Date n_date;
        private Integer n_integer;


}


2、开始正儿八经测试

3.0、准备假数据




    /**
     * 假数据JavaBean
     * @return
     */
    private JavaBean getJavaBean() {
   
        JavaBean javaBean = new JavaBean();
        javaBean.setN_long(10045456456L);
        javaBean.setN_bigDecimal(new BigDecimal("12.12245"));
        javaBean.setN_date(new Date());
        javaBean.setN_integer(100);
        javaBean.setN_string("HealerJean");

        return javaBean;
    }


    /**
     * 假数据JavaBean 对应的 Map
     * @return
     */
    private Map<String, Object> getJavaBeanMap() {
   
        Map<String, Object> map = new HashMap<>();
        map.put("n_long", 10045456456L);
        map.put("n_string", "张宇晋");
        map.put("n_bigDecimal",new BigDecimal("12.12245") );
        map.put("n_date",new Date() );
        map.put("n_integer",100 );
        return map;
    }

    /**
     * 假数据 IncludeJavaBean 用于测试 include.not_null
     * @return
     */
    private IncludeJavaBean getIncludeJavaBean() {
   
        IncludeJavaBean  includeJavaBean = new IncludeJavaBean();
        includeJavaBean.setN_long(10045456456L);
        includeJavaBean.setN_bigDecimal(new BigDecimal("12.12245"));
        includeJavaBean.setN_date(null);
        includeJavaBean.setN_integer(100);
        /**
         * 下面和这个设置为null
         */
        includeJavaBean.setN_string(null);

        return includeJavaBean;
    }

3.1、date类型必须是l

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值