第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用Jackson JSON處理器序列化Joda DateTime?

如何使用Jackson JSON處理器序列化Joda DateTime?

犯罪嫌疑人X 2019-12-16 11:23:21
如何使用Jackson JSON處理器序列化Joda DateTime?如何讓Jackson根據(jù)簡(jiǎn)單的模式(例如“ dd-MM-yyyy”)序列化我的Joda DateTime對(duì)象?我試過(guò)了:@JsonSerialize(using=DateTimeSerializer.class)private final DateTime date;我也嘗試過(guò):ObjectMapper mapper = new ObjectMapper()    .getSerializationConfig()    .setDateFormat(df);謝謝!
查看完整描述

4 回答

?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊

對(duì)于Jackson 2,使用默認(rèn)格式非常容易;只需JodaModule在您的帳戶上注冊(cè)即可ObjectMapper。


ObjectMapper mapper = new ObjectMapper();

mapper.registerModule(new JodaModule());

對(duì)于的自定義序列化/反序列化DateTime,您需要實(shí)現(xiàn)自己的StdScalarSerializer和StdScalarDeserializer;它非常令人費(fèi)解,但是無(wú)論如何。


例如,這是一個(gè)在UTC時(shí)區(qū)DateTime使用的序列化器ISODateFormat:


public class DateTimeSerializer extends StdScalarSerializer<DateTime> {


? ? public DateTimeSerializer() {

? ? ? ? super(DateTime.class);

? ? }


? ? @Override

? ? public void serialize(DateTime dateTime,

? ? ? ? ? ? ? ? ? ? ? ? ? JsonGenerator jsonGenerator,

? ? ? ? ? ? ? ? ? ? ? ? ? SerializerProvider provider) throws IOException, JsonGenerationException {

? ? ? ? String dateTimeAsString = ISODateTimeFormat.withZoneUTC().print(dateTime);

? ? ? ? jsonGenerator.writeString(dateTimeAsString);

? ? }

}

以及相應(yīng)的反序列化器:


public class DateTimeDesrializer extends StdScalarDeserializer<DateTime> {


? ? public DateTimeDesrializer() {

? ? ? ? super(DateTime.class);

? ? }


? ? @Override

? ? public DateTime deserialize(JsonParser jsonParser,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? DeserializationContext deserializationContext) throws IOException, JsonProcessingException {

? ? ? ? try {

? ? ? ? ? ? JsonToken currentToken = jsonParser.getCurrentToken();

? ? ? ? ? ? if (currentToken == JsonToken.VALUE_STRING) {

? ? ? ? ? ? ? ? String dateTimeAsString = jsonParser.getText().trim();

? ? ? ? ? ? ? ? return ISODateTimeFormat.withZoneUTC().parseDateTime(dateTimeAsString);

? ? ? ? ? ? }

? ? ? ? } finally {

? ? ? ? ? ? throw deserializationContext.mappingException(getValueClass());

? ? ? ? }

? ? }

然后將它們與模塊捆綁在一起:


public class DateTimeModule extends SimpleModule {


? ? public DateTimeModule() {

? ? ? ? super();

? ? ? ? addSerializer(DateTime.class, new DateTimeSerializer());

? ? ? ? addDeserializer(DateTime.class, new DateTimeDeserializer());

? ? }

}

然后在您的上注冊(cè)該模塊ObjectMapper:


ObjectMapper mapper = new ObjectMapper();

mapper.registerModule(new DateTimeModule());


查看完整回答
反對(duì) 回復(fù) 2019-12-16
  • 4 回答
  • 0 關(guān)注
  • 861 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)