1 package com.fasterxml.jackson.databind.ser.std;
2
3 import java.io.IOException;
4 import java.lang.reflect.Type;
5
6 import com.fasterxml.jackson.core.*;
7
8 import com.fasterxml.jackson.databind.JavaType;
9 import com.fasterxml.jackson.databind.JsonMappingException;
10 import com.fasterxml.jackson.databind.JsonNode;
11 import com.fasterxml.jackson.databind.SerializerProvider;
12 import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
13 import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
14 import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
15
16 /**
17  * This is the special serializer for regular {@link java.lang.String}s.
18  *<p>
19  * Since this is one of "native" types, no type information is ever
20  * included on serialization (unlike for most scalar types as of 1.5)
21  */

22 @JacksonStdImpl
23 public final class StringSerializer
24 // NOTE: generic parameter changed from String to Object in 2.6, to avoid
25 //   use of bridge methods
26 // In 2.9, removed use of intermediate type `NonTypedScalarSerializerBase`
27     extends StdScalarSerializer<Object>
28 {
29     private static final long serialVersionUID = 1L;
30
31     public StringSerializer() { super(String.classfalse); }
32
33     @Override
34     public boolean isEmpty(SerializerProvider prov, Object value) {
35         String str = (String) value;
36         return str.length() == 0;
37     }
38
39     @Override
40     public void serialize(Object value, JsonGenerator gen, SerializerProvider provider) throws IOException {
41         gen.writeString((String) value);
42     }
43
44     @Override
45     public final void serializeWithType(Object value, JsonGenerator gen, SerializerProvider provider,
46             TypeSerializer typeSer) throws IOException
47     {
48         // no type info, just regular serialization
49         gen.writeString((String) value);
50     }
51
52     @Override
53     public JsonNode getSchema(SerializerProvider provider, Type typeHint) {
54         return createSchemaNode("string"true);
55     }
56
57     @Override
58     public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException {
59         visitStringFormat(visitor, typeHint);
60     }
61 }
62