Class ObjectToMapTransformer
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.transformer.AbstractTransformer
org.springframework.integration.transformer.AbstractPayloadTransformer<Object,Map<?,?>>
org.springframework.integration.transformer.ObjectToMapTransformer
- All Implemented Interfaces:
Aware
,BeanFactoryAware
,BeanNameAware
,InitializingBean
,ApplicationContextAware
,ExpressionCapable
,NamedComponent
,GenericTransformer<Message<?>,Message<?>>
,Transformer
public class ObjectToMapTransformer extends AbstractPayloadTransformer<Object,Map<?,?>>
Transforms an object graph into a Map. It supports a conventional Map (map of maps)
where complex attributes are represented as Map values as well as a flat Map
where keys document the path to the value. By default it will transform to a flat Map.
If you need to transform to a Map of Maps set the 'shouldFlattenKeys' property to 'false'
via the
setShouldFlattenKeys(boolean)
method.
It supports Collections, Maps and Arrays which means that for flat maps it will flatten
an Object's properties. Below is an example showing how a flattened
Object hierarchy is represented when 'shouldFlattenKeys' is TRUE.
The transformation is based on to and then from JSON conversion.
public class Person {
public String name = "John";
public Address address = new Address();
}
public class Address {
private String street = "123 Main Street";
}
The resulting Map would look like this:
{name=John, address.street=123 Main Street}
- Since:
- 2.0
- Author:
- Oleg Zhurakousky, Artem Bilan, Gary Russell, Vikas Prasad
- See Also:
JsonObjectMapperProvider
-
Field Summary
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger
-
Constructor Summary
Constructors Constructor Description ObjectToMapTransformer()
Construct with the defaultJsonObjectMapper
instance available viafactory
.ObjectToMapTransformer(JsonObjectMapper<?,?> jsonObjectMapper)
Construct with the providedJsonObjectMapper
instance. -
Method Summary
Modifier and Type Method Description String
getComponentType()
Subclasses may implement this method to provide component type information.void
setShouldFlattenKeys(boolean shouldFlattenKeys)
protected Map<String,Object>
transformPayload(Object payload)
Methods inherited from class org.springframework.integration.transformer.AbstractPayloadTransformer
doTransform
Methods inherited from class org.springframework.integration.transformer.AbstractTransformer
transform
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, onInit, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
-
Constructor Details
-
ObjectToMapTransformer
public ObjectToMapTransformer()Construct with the defaultJsonObjectMapper
instance available viafactory
. -
ObjectToMapTransformer
Construct with the providedJsonObjectMapper
instance.- Parameters:
jsonObjectMapper
- theJsonObjectMapper
to use.- Since:
- 5.0
-
-
Method Details
-
setShouldFlattenKeys
public void setShouldFlattenKeys(boolean shouldFlattenKeys) -
transformPayload
- Specified by:
transformPayload
in classAbstractPayloadTransformer<Object,Map<?,?>>
-
getComponentType
Description copied from class:IntegrationObjectSupport
Subclasses may implement this method to provide component type information.- Specified by:
getComponentType
in interfaceNamedComponent
- Overrides:
getComponentType
in classIntegrationObjectSupport
-