@Override protected JSR310FormattedSerializerBase<?> withFeatures(Boolean writeZoneId, Boolean writeNanoseconds) { return new OffsetTimeSerializer(this, _useTimestamp, writeNanoseconds, _formatter); } }
@Override public void serialize(OffsetTime time, JsonGenerator g, SerializerProvider provider) throws IOException { if (useTimestamp(provider)) { g.writeStartArray(); _serializeAsArrayContents(time, g, provider); g.writeEndArray(); } else { String str = (_formatter == null) ? time.toString() : time.format(_formatter); g.writeString(str); } }
@Override public void serializeWithType(OffsetTime value, JsonGenerator g, SerializerProvider provider, TypeSerializer typeSer) throws IOException { WritableTypeId typeIdDef = typeSer.writeTypePrefix(g, typeSer.typeId(value, serializationShape(provider))); // need to write out to avoid double-writing array markers if (typeIdDef.valueShape == JsonToken.START_ARRAY) { _serializeAsArrayContents(value, g, provider); } else { String str = (_formatter == null) ? value.toString() : value.format(_formatter); g.writeString(str); } typeSer.writeTypeSuffix(g, typeIdDef); }
@Override // since 2.9 protected JsonToken serializationShape(SerializerProvider provider) { return useTimestamp(provider) ? JsonToken.START_ARRAY : JsonToken.VALUE_STRING; }
private final void _serializeAsArrayContents(OffsetTime value, JsonGenerator g, SerializerProvider provider) throws IOException { g.writeNumber(value.getHour()); g.writeNumber(value.getMinute()); final int secs = value.getSecond(); final int nanos = value.getNano(); if ((secs > 0) || (nanos > 0)) { g.writeNumber(secs); if (nanos > 0) { if(useNanoseconds(provider)) { g.writeNumber(nanos); } else { g.writeNumber(value.get(ChronoField.MILLI_OF_SECOND)); } } } g.writeString(value.getOffset().toString()); }
@Override public void serialize(OffsetTime time, JsonGenerator gen, SerializerProvider provider) throws IOException { if (useTimestamp(provider)) { gen.writeStartArray(); gen.writeNumber(time.getHour()); gen.writeNumber(time.getMinute()); final int secs = time.getSecond(); final int nanos = time.getNano(); if (secs > 0 || nanos > 0) { gen.writeNumber(secs); if (nanos > 0) { if(provider.isEnabled(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS)) gen.writeNumber(nanos); else gen.writeNumber(time.get(ChronoField.MILLI_OF_SECOND)); } } gen.writeString(time.getOffset().toString()); gen.writeEndArray(); } else { String str = (_formatter == null) ? time.toString() : time.format(_formatter); gen.writeString(str); } } }
@Override protected OffsetTimeSerializer withFormat(Boolean useTimestamp, DateTimeFormatter dtf, JsonFormat.Shape shape) { return new OffsetTimeSerializer(this, useTimestamp, dtf); }
@Override protected OffsetTimeSerializer withFormat(Boolean useTimestamp, DateTimeFormatter dtf) { return new OffsetTimeSerializer(this, useTimestamp, dtf); }