1 package com.fasterxml.jackson.datatype.jsr310.ser;
2
3 import java.io.IOException;
4 import java.time.ZoneId;
5
6 import com.fasterxml.jackson.core.JsonGenerator;
7 import com.fasterxml.jackson.core.JsonToken;
8 import com.fasterxml.jackson.core.type.WritableTypeId;
9 import com.fasterxml.jackson.databind.SerializerProvider;
10 import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
11 import com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase;
12
13 // @since 2.10.2
14 public class ZoneIdSerializer extends ToStringSerializerBase
15 {
16     private static final long serialVersionUID = 1L;
17
18     public ZoneIdSerializer() { super(ZoneId.class); }
19
20     @Override
21     public void serializeWithType(Object value, JsonGenerator g,
22             SerializerProvider provider, TypeSerializer typeSer) throws IOException
23     {
24         // Better ensure we don't use specific sub-classes:
25         WritableTypeId typeIdDef = typeSer.writeTypePrefix(g,
26                 typeSer.typeId(value, ZoneId.class, JsonToken.VALUE_STRING));
27         serialize(value, g, provider);
28         typeSer.writeTypeSuffix(g, typeIdDef);
29     }
30
31     @Override
32     public String valueToString(Object value) {
33         return value.toString();
34     }
35 }
36