Java 类com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer 实例源码
项目:QuizUpWinner
文件:BasicDeserializerFactory.java
public JsonDeserializer<?> findDefaultDeserializer(DeserializationContext paramDeserializationContext, JavaType paramJavaType, BeanDescription paramBeanDescription)
{
Class localClass = paramJavaType.getRawClass();
String str = localClass.getName();
if ((localClass.isPrimitive()) || (str.startsWith("java.")))
{
if (localClass == CLASS_OBJECT)
return UntypedObjectDeserializer.instance;
if ((localClass == CLASS_STRING) || (localClass == CLASS_CHAR_BUFFER))
return StringDeserializer.instance;
if (localClass == CLASS_ITERABLE)
{
TypeFactory localTypeFactory = paramDeserializationContext.getTypeFactory();
JavaType localJavaType;
if (paramJavaType.containedTypeCount() > 0)
localJavaType = paramJavaType.containedType(0);
else
localJavaType = TypeFactory.unknownType();
return createCollectionDeserializer(paramDeserializationContext, localTypeFactory.constructCollectionType(Collection.class, localJavaType), paramBeanDescription);
}
JsonDeserializer localJsonDeserializer1 = NumberDeserializers.find(localClass, str);
Object localObject = localJsonDeserializer1;
if (localJsonDeserializer1 == null)
{
JsonDeserializer localJsonDeserializer2 = DateDeserializers.find(localClass, str);
localObject = localJsonDeserializer2;
if (localJsonDeserializer2 == null)
localObject = JdkDeserializers.find(localClass, str);
}
return localObject;
}
if (str.startsWith("com.fasterxml."))
return JacksonDeserializers.find(localClass);
return null;
}
项目:imagej-server
文件:DefaultJsonService.java
/**
* Constructs and initializes a JsonService with an {@link ObjectService}.
*
* @param objectService
*/
public DefaultJsonService(final ObjectService objectService) {
idToObjDeserializer = new UntypedObjectDeserializer(null, null) {
@Override
public Object deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
final Object obj = super.deserialize(p, ctxt);
if (!(obj instanceof String && ((String) obj).startsWith("object:")))
return obj;
final String id = (String) obj;
if (!objectService.contains(id)) {
throw new JsonMappingException(p, "Object does not exist");
}
final ObjectInfo info = objectService.find(id);
info.updateLastUsed();
return info.getObject();
}
};
final JsonSerializer<Object> objToIdSerializer =
new JsonSerializer<Object>()
{
@Override
public void serialize(Object value, JsonGenerator gen,
SerializerProvider serializers) throws IOException,
JsonProcessingException
{
gen.writeString(objectService.register(value, "DefaultJsonService"));
}
};
final SimpleModule objToIdModule = new SimpleModule();
objToIdModule.setSerializerModifier(new BeanSerializerModifier() {
@Override
public JsonSerializer<?> modifySerializer(SerializationConfig config,
BeanDescription beanDesc, JsonSerializer<?> serializer)
{
if (Mixins.support(beanDesc.getBeanClass())) return serializer;
// If the serialized class is unknown (i.e. serialized using the general
// BeanSerializer) or should not be serialized (i.e. complicated class
// implemented interfaces such as Iterable), would be serialized as an
// ID.
if (serializer instanceof BeanSerializer) return objToIdSerializer;
if (notSerialized(beanDesc.getBeanClass())) return objToIdSerializer;
return serializer;
}
});
objToIdMapper = new ObjectMapper();
objToIdMapper.registerModule(objToIdModule);
// register Jackson MixIns to obtain better json output format for some
// specific types
Mixins.registerMixIns(objToIdMapper);
}