下面列出了com.fasterxml.jackson.databind.SerializerProvider#defaultSerializeNull ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void serialize(T value, JsonGenerator generator, SerializerProvider provider)
throws IOException
{
if (value == null) {
provider.defaultSerializeNull(generator);
return;
}
try {
Class<?> type = value.getClass();
JsonSerializer<T> serializer = serializerCache.get(type, () -> createSerializer(provider, type));
serializer.serializeWithType(value, generator, provider, typeSerializer);
}
catch (ExecutionException e) {
Throwable cause = e.getCause();
if (cause != null) {
throwIfInstanceOf(cause, IOException.class);
}
throw new RuntimeException(e);
}
}
@Override
public void serializeWithType(HibernateProxy value, JsonGenerator jgen,
SerializerProvider provider, TypeSerializer typeSer)
throws IOException, JsonProcessingException {
Object proxiedValue = findProxied(value);
if (proxiedValue == null) {
provider.defaultSerializeNull(jgen);
return;
}
/*
* This isn't exactly right, since type serializer really refers to
* proxy object, not value. And we really don't either know static type
* (necessary to know how to apply additional type info) or other
* things; so it's not going to work well. But... we'll do out best.
*/
findSerializer(provider, proxiedValue).serializeWithType(proxiedValue,
jgen, provider, typeSer);
}
public void serializeContentsUsing(Collection<?> value, JsonGenerator g, SerializerProvider provider,
JsonSerializer<Object> ser) throws IOException
{
Iterator<?> it = value.iterator();
if (it.hasNext()) {
TypeSerializer typeSer = _valueTypeSerializer;
int i = 0;
do {
Object elem = it.next();
try {
if (elem == null) {
provider.defaultSerializeNull(g);
} else {
if (typeSer == null) {
ser.serialize(elem, g, provider);
} else {
ser.serializeWithType(elem, g, provider, typeSer);
}
}
++i;
} catch (Exception e) {
wrapAndThrow(provider, e, value, i);
}
} while (it.hasNext());
}
}
@Override
public void serialize(List<?> value, JsonGenerator jgen, SerializerProvider provider) throws IOException,
JsonGenerationException {
jgen.writeStartArray();
for (Object elem : value) {
if (elem == null) {
provider.defaultSerializeNull(jgen);
} else {
Class<?> clazz = elem.getClass();
JsonSerializer<Object> serializer = serializers.get(clazz);
if (serializer == null) {
serializer = provider.findTypedValueSerializer(clazz, false, null);
}
serializer.serialize(elem, jgen, provider);
}
}
jgen.writeEndArray();
}
@Override
public void serialize(Object[] value, JsonGenerator gen, SerializerProvider provider) throws IOException {
gen.writeStartArray();
for (Object elem : value) {
if (elem == null) {
provider.defaultSerializeNull(gen);
} else {
Class<?> clazz = elem.getClass();
JsonSerializer<Object> serializer = serializers.get(clazz);
if (serializer == null) {
serializer = provider.findTypedValueSerializer(clazz, false, null);
}
serializer.serialize(elem, gen, provider);
}
}
gen.writeEndArray();
}
@Override
public void serialize(Instant value, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
if (value == null) {
serializers.defaultSerializeNull(gen);
} else if (gen instanceof BsonGenerator) {
((BsonGenerator) gen).writeDateTime(new Date(value.toEpochMilli()));
} else {
gen.writeNumber(value.toEpochMilli());
}
}
@Override
public void serialize(HibernateProxy value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
Object proxiedValue = findProxied(value);
// TODO: figure out how to suppress nulls, if necessary? (too late for
// that here)
if (proxiedValue == null) {
provider.defaultSerializeNull(jgen);
return;
}
findSerializer(provider, proxiedValue).serialize(proxiedValue, jgen,
provider);
}
@Override
public final void serialize(JsonGenerator gen, SerializerProvider serializers) throws IOException
{
if (_value == null) {
serializers.defaultSerializeNull(gen);
} else if (_value instanceof JsonSerializable) {
((JsonSerializable) _value).serialize(gen, serializers);
} else {
gen.writeObject(_value);
}
}
@Override
protected void serializeContents(Collection<?> value, JsonGenerator jsonGenerator,
SerializerProvider serializerProvider) throws IOException {
jsonGenerator.setCurrentValue(value);
PropertySerializerMap serializers = this._dynamicSerializers;
TypeSerializer typeSerializer = this._valueTypeSerializer;
int index = -1;
try {
for (Object element : CollectionUtils.nullSafeCollection(value)) {
index++;
if (Objects.isNull(element)) {
serializerProvider.defaultSerializeNull(jsonGenerator);
}
else {
Class<?> elementType = element.getClass();
JsonSerializer<Object> serializer = resolveSerializer(serializerProvider, elementType);
if (typeSerializer != null) {
serializer.serializeWithType(element, jsonGenerator, serializerProvider, typeSerializer);
}
else {
serializer.serialize(element, jsonGenerator, serializerProvider);
}
}
}
}
catch(Exception cause) {
wrapAndThrow(serializerProvider, cause, value, index);
}
}
public void serialize(String s, BsonGenerator bsonGenerator, SerializerProvider serializerProvider) throws
IOException {
if (s == null) {
serializerProvider.defaultSerializeNull(bsonGenerator);
return;
}
if (!isValid(s)) {
throw new IllegalArgumentException("invalid hexadecimal representation of an ObjectId: [" + s + "]");
}
bsonGenerator.writeObjectId(createObjectIdFromString(s));
}
@Override
public void serialize(T o, BsonGenerator bsonGenerator, SerializerProvider serializerProvider) throws
IOException, JsonProcessingException {
if (o == null) {
serializerProvider.defaultSerializeNull(bsonGenerator);
} else {
bsonGenerator.writeDateTime(new Date(this.getEpochMillis.applyAsLong(o)));
}
}
public void serialize(String s, BsonGenerator bsonGenerator, SerializerProvider serializerProvider) throws
IOException, JsonProcessingException {
if (s == null) {
serializerProvider.defaultSerializeNull(bsonGenerator);
return;
}
if (!isValid(s)) {
throw new IllegalArgumentException("invalid hexadecimal representation of an ObjectId: [" + s + "]");
}
bsonGenerator.writeObjectId(createObjectIdFromString(s));
}
@Override
public void serialize(TYPE value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if(value == null) {
serializers.defaultSerializeNull(gen);
} else {
gen.writeString(converter.convert(value));
}
}
@Override
public void serializeContents(Object value, JsonGenerator jgen, SerializerProvider provider)
throws IOException
{
JsonPropertyOrder order = value.getClass().getAnnotation(JsonPropertyOrder.class);
String[] propOrder = (order == null) ? null : order.value();
if (propOrder == null) {
throw new IllegalStateException("Bean must declare JsonPropertyOrder!");
}
if (propOrder.length == 0) {
return;
}
int i = 0;
try {
do {
Field field = value.getClass().getDeclaredField(propOrder[i]);
ReflectionUtils.makeAccessible(field);
Object elem = field.get(value);
if (elem == null) {
provider.defaultSerializeNull(jgen);
}
else {
Class<?> cc = elem.getClass();
JsonSerializer<Object> serializer = provider.findValueSerializer(cc, null);
serializer.serialize(elem, jgen, provider);
}
++i;
}
while (i < propOrder.length);
}
catch (Exception e) {
// [JACKSON-55] Need to add reference information
wrapAndThrow(provider, e, value, i);
}
}
@Override
public void serialize(T value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
ObjectMapper mapper = (ObjectMapper) jgen.getCodec();
JsonNode tree = mapper.valueToTree(value);
if (tree.isNull()) {
provider.defaultSerializeNull(jgen);
} else {
jgen.writeString(mapper.writeValueAsString(tree));
}
}
@Override
public void serializeContents(Collection<?> value, JsonGenerator g, SerializerProvider provider) throws IOException
{
g.setCurrentValue(value);
if (_elementSerializer != null) {
serializeContentsUsing(value, g, provider, _elementSerializer);
return;
}
Iterator<?> it = value.iterator();
if (!it.hasNext()) {
return;
}
PropertySerializerMap serializers = _dynamicSerializers;
final TypeSerializer typeSer = _valueTypeSerializer;
int i = 0;
try {
do {
Object elem = it.next();
if (elem == null) {
provider.defaultSerializeNull(g);
} else {
Class<?> cc = elem.getClass();
JsonSerializer<Object> serializer = serializers.serializerFor(cc);
if (serializer == null) {
if (_elementType.hasGenericTypes()) {
serializer = _findAndAddDynamic(serializers,
provider.constructSpecializedType(_elementType, cc), provider);
} else {
serializer = _findAndAddDynamic(serializers, cc, provider);
}
serializers = _dynamicSerializers;
}
if (typeSer == null) {
serializer.serialize(elem, g, provider);
} else {
serializer.serializeWithType(elem, g, provider, typeSer);
}
}
++i;
} while (it.hasNext());
} catch (Exception e) {
wrapAndThrow(provider, e, value, i);
}
}
@Override
public final void serialize(JsonGenerator g, SerializerProvider provider)
throws IOException
{
provider.defaultSerializeNull(g);
}