使用fastJSON格式化日期格式对象,及空属性,单引号等问题

经常遇到使用JSON格式化日期,可能需要转换的格式不同,一般有以下几种情况

1. 毫秒时间

2. 秒时间

3.格式化的时间

使用方式: String com.alibaba.fastjson.JSON.toJSONString(Object object)

1. 默认情况下,日期格式转换为 毫秒时间,如下

public class EnjoyTest {

	@Test
	public void test() throws Exception {
		A object = new A();
		object.date = new Date();
		System.out.println(JSON.toJSONString(object));
        /*
        {"date":1599813582838}
        */
	}
}
class A {
	public Date date;
}

2. 如果需要到秒的格式,在Date类型的数据增加注解 @JSONField(format = "unixtime"),如果format='millis', 格式为毫秒,和默认相同,注解可以加在属性或者getter方法上

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;

public class EnjoyTest {

	@Test
	public void test() throws Exception {
		A object = new A();
		object.date = new Date();
		System.out.println(JSON.toJSONString(object));
        /*
        {"date":1599813715}
        */
	}
}

class A {
	@JSONField(format = "unixtime")
	public Date date;
}

3. 如果使用格式化之后的日期,可以在调用时传入SerializerFeature.WriteDateUseDateFormat,默认格式是:com.alibaba.fastjson.JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"

public class EnjoyTest {

	@Test
	public void test() throws Exception {
		A object = new A();
		object.date = new Date();
		System.out.println(JSON.toJSONString(object, SerializerFeature.WriteDateUseDateFormat));
        /*
            {"date":"2020-09-11 16:55:19"}
        */
	}
}
class A {
	public Date date;
}

如果自定义格式,有以下几种

a. 修改 com.alibaba.fastjson.JSON.DEFFAULT_DATE_FORMAT = "yyyy/MM/dd HH:mm",这样影响到所有的默认格式化日期转换

public class EnjoyTest {

	@Test
	public void test() throws Exception {
		A object = new A();
		object.date = new Date();
		JSON.DEFFAULT_DATE_FORMAT = "yyyy/MM/dd HH:mm";
		System.out.println(JSON.toJSONString(object, SerializerFeature.WriteDateUseDateFormat));
        /*
        {"date":"2020/09/11 17:00"}
        */
	}
}

b. 在日期自动使用注解@JSONField(format = "yyyy-MM-dd HH:mm"),注解可以加在属性或者getter方法上,该方法对需要不同格式的日期比较有效

public class EnjoyTest {

	@Test
	public void test() throws Exception {
		A object = new A();
		object.date = new Date();
		System.out.println(JSON.toJSONString(object));
        /*
           {"date":"2020-09-11 17:03"}
        */
	}
}
class A {
	@JSONField(format = "yyyy-MM-dd HH:mm")
	public Date date;
}

c. 转字符串时传入格式 JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm"),该方式方便修改本次调用的所有日期格式

public class EnjoyTest {

	@Test
	public void test() throws Exception {
		A object = new A();
		object.date = new Date();
		System.out.println(JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm"));
        /*
        {"date":"2020-09-11 17:05"}
        */
	}
}

如果生成的字符串包含空属性,使用单引号或者其他,可以传入多个SerializerFeature对象

fastJSON格式化
QuoteFieldNames属性使用引号,默认
UseSingleQuote使用单引号,默认双引号
WriteMapNullValue空值属性写入,默认不显示值为空的属性
WriteEnumUsingToString枚举使用toString方法写入
WriteEnumUsingName枚举使用名称
UseISO8601DateFormat日期默认格式化
WriteNullListAsEmpty值为null的list使用[]
WriteNullStringAsEmpty值为null的string使用''
WriteNullNumberAsZero值为null的数值使用0
WriteNullBooleanAsFalse值为null的Boolean使用false
SkipTransientField使用@Transient的属性不写入
SortField属性排序
PrettyFormat格式化输出的字符串
WriteClassName

返回的属性包含类型

"@type":"com.dev.test.job.A"

WriteDateUseDateFormat使用日期格式化
IgnoreNonFieldGetter没有getter则不写入属性
MapSortFieldmap属性排序
....... 

 

maven

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.12</version>
</dependency>

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值