如何创建一个用数字而不是字符串写Date的JsonbCong?

时间:2019-01-14 02:29:41

标签: java json wildfly resteasy jsonb

很显然,使用Eclipse Yasson JsonbDateFormat.TIME_IN_MILLIS批注将日期数字作为字符串返回:

 import javax.json.bind.annotation.JsonbDateFormat;

 class MyObject { 
    @JsonbDateFormat(JsonbDateFormat.TIME_IN_MILLIS)
    Date myDate;
 }

例如输出(引号)

{"myDate":"1234567890"}

如何配置json-b以省略数字引号(例如Jackson的默认行为)?例如:

{"myDate":1234567890}

1 个答案:

答案 0 :(得分:1)

尝试从Date到Long的绑定适配器(反之亦然)。

public static class DateAdapter implements JsonbAdapter<Date, Long> {

    @Override
    public Long adaptToJson(Date date) {
        return date.getTime();
    }

    @Override
    public Date adaptFromJson(Long ms) {
        return new Date(ms);
    }
}

接下来,用@JsonbTypeAdapter注释属性。

class MyObject { 
    @JsonbTypeAdapter(DateAdapter.class)
    Date myDate;
}