本文整理了Java中com.fasterxml.jackson.databind.JsonSerializer.serializeWithType()
方法的一些代码示例,展示了JsonSerializer.serializeWithType()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。JsonSerializer.serializeWithType()
方法的具体详情如下:
包路径:com.fasterxml.jackson.databind.JsonSerializer
类名称:JsonSerializer
方法名:serializeWithType
[英]Method that can be called to ask implementation to serialize values of type this serializer handles, using specified type serializer for embedding necessary type information.
Default implementation will throw UnsupportedOperationExceptionto indicate that proper type handling needs to be implemented.
For simple datatypes written as a single scalar value (JSON String, Number, Boolean), implementation would look like:
// note: method to call depends on whether this type is serialized as JSON scalar, object or Array!
typeSer.writeTypePrefixForScalar(value, gen);
serialize(value, gen, provider);
typeSer.writeTypeSuffixForScalar(value, gen);
and implementations for type serialized as JSON Arrays or Objects would differ slightly, as START-ARRAY
/END-ARRAY
and START-OBJECT
/END-OBJECT
pairs need to be properly handled with respect to serializing of contents.
[中]方法,可调用该方法要求实现序列化此序列化程序处理的类型的值,使用指定的类型序列化程序嵌入必要的类型信息。
默认实现将抛出UnsupportedOperationException,以指示需要实现正确的类型处理。
对于编写为单个标量值(JSON字符串、数字、布尔值)的简单数据类型,实现如下所示:
// note: method to call depends on whether this type is serialized as JSON scalar, object or Array!
typeSer.writeTypePrefixForScalar(value, gen);
serialize(value, gen, provider);
typeSer.writeTypeSuffixForScalar(value, gen);
而序列化为JSON数组或对象的类型的实现会略有不同,因为START-ARRAY
/END-ARRAY
和START-OBJECT
/END-OBJECT
对需要在内容序列化方面得到正确处理。
代码示例来源:origin: redisson/redisson
@Override
public void serializeAsElement(Object map, JsonGenerator gen,
SerializerProvider provider) throws Exception
{
if (_typeSerializer == null) {
_valueSerializer.serialize(_value, gen, provider);
} else {
_valueSerializer.serializeWithType(_value, gen, provider, _typeSerializer);
}
}
代码示例来源:origin: redisson/redisson
@Override
public void serializeContents(Iterator<?> value, JsonGenerator g,
SerializerProvider provider) throws IOException
{
if (!value.hasNext()) {
return;
}
JsonSerializer<Object> serializer = _elementSerializer;
if (serializer == null) {
_serializeDynamicContents(value, g, provider);
return;
}
final TypeSerializer typeSer = _valueTypeSerializer;
do {
Object elem = value.next();
if (elem == null) {
provider.defaultSerializeNull(g);
} else if (typeSer == null) {
serializer.serialize(elem, g, provider);
} else {
serializer.serializeWithType(elem, g, provider, typeSer);
}
} while (value.hasNext());
}
代码示例来源:origin: prestodb/presto
@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);
}
}
代码示例来源:origin: redisson/redisson
protected void _serializeDynamicContents(Iterator<?> value, JsonGenerator g,
SerializerProvider provider) throws IOException
{
final TypeSerializer typeSer = _valueTypeSerializer;
PropertySerializerMap serializers = _dynamicSerializers;
do {
Object elem = value.next();
if (elem == null) {
provider.defaultSerializeNull(g);
continue;
}
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);
}
} while (value.hasNext());
}
}
代码示例来源:origin: redisson/redisson
if (_nullSerializer != null) {
gen.writeFieldName(_name);
_nullSerializer.serialize(null, gen, prov);
Class<?> cls = value.getClass();
PropertySerializerMap m = _dynamicSerializers;
ser = m.serializerFor(cls);
if (ser == null) {
ser = _findAndAddDynamic(m, cls, prov);
ser.serialize(value, gen, prov);
} else {
ser.serializeWithType(value, gen, prov, _typeSerializer);
代码示例来源:origin: redisson/redisson
public void serializeTypedContents(Object[] value, JsonGenerator jgen, SerializerProvider provider) throws IOException
{
final int len = value.length;
final TypeSerializer typeSer = _valueTypeSerializer;
int i = 0;
Object elem = null;
try {
PropertySerializerMap serializers = _dynamicSerializers;
for (; i < len; ++i) {
elem = value[i];
if (elem == null) {
provider.defaultSerializeNull(jgen);
continue;
}
Class<?> cc = elem.getClass();
JsonSerializer<Object> serializer = serializers.serializerFor(cc);
if (serializer == null) {
serializer = _findAndAddDynamic(serializers, cc, provider);
}
serializer.serializeWithType(elem, jgen, provider, typeSer);
}
} catch (Exception e) {
wrapAndThrow(provider, e, elem, i);
}
}
代码示例来源:origin: redisson/redisson
public void serializeContentsUsing(Object[] value, JsonGenerator jgen, SerializerProvider provider,
JsonSerializer<Object> ser) throws IOException
{
final int len = value.length;
final TypeSerializer typeSer = _valueTypeSerializer;
int i = 0;
Object elem = null;
try {
for (; i < len; ++i) {
elem = value[i];
if (elem == null) {
provider.defaultSerializeNull(jgen);
continue;
}
if (typeSer == null) {
ser.serialize(elem, jgen, provider);
} else {
ser.serializeWithType(elem, jgen, provider, typeSer);
}
}
} catch (Exception e) {
wrapAndThrow(provider, e, elem, i);
}
}
代码示例来源:origin: redisson/redisson
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.serialize(elem, g, provider);
} else {
serializer.serializeWithType(elem, g, provider, typeSer);
代码示例来源:origin: redisson/redisson
if (_nullSerializer != null) {
gen.writeFieldName(_name);
_nullSerializer.serialize(null, gen, prov);
Class<?> cls = value.getClass();
PropertySerializerMap m = _dynamicSerializers;
ser = m.serializerFor(cls);
if (ser == null) {
ser = _findAndAddDynamic(m, cls, prov);
ser.serialize(value, gen, prov);
} else {
ser.serializeWithType(value, gen, prov, _typeSerializer);
代码示例来源:origin: redisson/redisson
@Override
public void serializeAsField(Object map, JsonGenerator gen,
SerializerProvider provider) throws IOException
{
_keySerializer.serialize(_key, gen, provider);
if (_typeSerializer == null) {
_valueSerializer.serialize(_value, gen, provider);
} else {
_valueSerializer.serializeWithType(_value, gen, provider, _typeSerializer);
}
}
代码示例来源:origin: redisson/redisson
Object elem = value.get(i);
if (elem == null) {
provider.defaultSerializeNull(jgen);
} else {
Class<?> cc = elem.getClass();
JsonSerializer<Object> serializer = serializers.serializerFor(cc);
if (serializer == null) {
serializer.serializeWithType(elem, jgen, provider, typeSer);
代码示例来源:origin: redisson/redisson
@Override
public void serializeWithType(T ref,
JsonGenerator g, SerializerProvider provider,
TypeSerializer typeSer) throws IOException
{
Object value = _getReferencedIfPresent(ref);
if (value == null) {
if (_unwrapper == null) {
provider.defaultSerializeNull(g);
}
return;
}
// 19-Apr-2016, tatu: In order to basically "skip" the whole wrapper level
// (which is what non-polymorphic serialization does too), we will need
// to simply delegate call, I think, and NOT try to use it here.
// Otherwise apply type-prefix/suffix, then std serialize:
/*
typeSer.writeTypePrefixForScalar(ref, g);
serialize(ref, g, provider);
typeSer.writeTypeSuffixForScalar(ref, g);
*/
JsonSerializer<Object> ser = _valueSerializer;
if (ser == null) {
ser = _findCachedSerializer(provider, value.getClass());
}
ser.serializeWithType(value, g, provider, typeSer);
}
代码示例来源:origin: redisson/redisson
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());
}
}
}
代码示例来源:origin: com.fasterxml.jackson.datatype/jackson-datatype-guava
.serialize(null, gen, provider);
} else {
_keySerializer.serialize(key, gen, provider);
for (Object vv : entry.getValue()) {
if (vv == null) {
provider.defaultSerializeNull(gen);
continue;
if (valueSer == null) {
Class<?> cc = vv.getClass();
valueSer = serializers.serializerFor(cc);
if (valueSer == null) {
valueSer = _findAndAddDynamic(serializers, cc, provider);
valueSer.serialize(vv, gen, provider);
} else {
valueSer.serializeWithType(vv, gen, provider, _valueTypeSerializer);
代码示例来源:origin: redisson/redisson
if (value == null) { // nulls need specialized handling
if (_nullSerializer != null) {
_nullSerializer.serialize(null, gen, prov);
} else { // can NOT suppress entries in tabular output
gen.writeNull();
Class<?> cls = value.getClass();
PropertySerializerMap map = _dynamicSerializers;
ser = map.serializerFor(cls);
if (ser == null) {
ser = _findAndAddDynamic(map, cls, prov);
ser.serialize(value, gen, prov);
} else {
ser.serializeWithType(value, gen, prov, _typeSerializer);
代码示例来源:origin: redisson/redisson
keySerializer.serialize(keyElem, gen, provider);
try {
valueSer.serializeWithType(valueElem, gen, provider, _valueTypeSerializer);
} catch (Exception e) {
wrapAndThrow(provider, e, value, String.valueOf(keyElem));
代码示例来源:origin: com.jwebmp.jackson.core/jackson-databind
public void serializeTypedContents(Object[] value, JsonGenerator jgen, SerializerProvider provider) throws IOException
{
final int len = value.length;
final TypeSerializer typeSer = _valueTypeSerializer;
int i = 0;
Object elem = null;
try {
PropertySerializerMap serializers = _dynamicSerializers;
for (; i < len; ++i) {
elem = value[i];
if (elem == null) {
provider.defaultSerializeNull(jgen);
continue;
}
Class<?> cc = elem.getClass();
JsonSerializer<Object> serializer = serializers.serializerFor(cc);
if (serializer == null) {
serializer = _findAndAddDynamic(serializers, cc, provider);
}
serializer.serializeWithType(elem, jgen, provider, typeSer);
}
} catch (Exception e) {
wrapAndThrow(provider, e, elem, i);
}
}
代码示例来源:origin: uk.co.nichesolutions.presto/presto-main
@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) {
propagateIfInstanceOf(e.getCause(), IOException.class);
throw Throwables.propagate(e.getCause());
}
}
代码示例来源:origin: redisson/redisson
public void serializeContentsUsing(List<?> value, JsonGenerator jgen, SerializerProvider provider,
JsonSerializer<Object> ser)
throws IOException
{
final int len = value.size();
if (len == 0) {
return;
}
final TypeSerializer typeSer = _valueTypeSerializer;
for (int i = 0; i < len; ++i) {
Object elem = value.get(i);
try {
if (elem == null) {
provider.defaultSerializeNull(jgen);
} else if (typeSer == null) {
ser.serialize(elem, jgen, provider);
} else {
ser.serializeWithType(elem, jgen, provider, typeSer);
}
} catch (Exception e) {
// [JACKSON-55] Need to add reference information
wrapAndThrow(provider, e, value, i);
}
}
}
代码示例来源:origin: FasterXML/jackson-datatype-guava
.serialize(null, gen, provider);
} else {
_keySerializer.serialize(key, gen, provider);
for (Object vv : entry.getValue()) {
if (vv == null) {
provider.defaultSerializeNull(gen);
continue;
if (valueSer == null) {
Class<?> cc = vv.getClass();
valueSer = serializers.serializerFor(cc);
if (valueSer == null) {
valueSer = _findAndAddDynamic(serializers, cc, provider);
valueSer.serialize(vv, gen, provider);
} else {
valueSer.serializeWithType(vv, gen, provider, _valueTypeSerializer);
内容来源于网络,如有侵权,请联系作者删除!