下面列出了怎么用com.fasterxml.jackson.databind.module.SimpleDeserializers的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void setupModule() throws JsonMappingException {
SetupContext context = mock(SetupContext.class);
underTest.setupModule(context);
ArgumentCaptor<SimpleSerializers> serializersCaptor = ArgumentCaptor.forClass(SimpleSerializers.class);
ArgumentCaptor<SimpleDeserializers> deserializersCaptor = ArgumentCaptor.forClass(SimpleDeserializers.class);
verify(context).addSerializers(serializersCaptor.capture());
verify(context).addDeserializers(deserializersCaptor.capture());
JavaType javaType = new ObjectMapper().constructType(Schema.class);
JsonSerializer<?> serializer = serializersCaptor.getValue().findSerializer(null, javaType, null);
assertThat(serializer, is(instanceOf(SchemaSerializer.class)));
JsonDeserializer<?> deserializer = deserializersCaptor.getValue().findBeanDeserializer(javaType, null, null);
assertThat(deserializer, is(instanceOf(SchemaDeserializer.class)));
}
private static ObjectMapper createProtobufMapper() {
ObjectMapper mapper = new ObjectMapper();
// Serialization
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// Deserialization
mapper.disable(SerializationFeature.INDENT_OUTPUT);
SimpleDeserializers simpleDeserializers = new SimpleDeserializers();
simpleDeserializers.addDeserializer(String.class, new TrimmingStringDeserializer());
List<Deserializers> deserializersList = Arrays.asList(
new AssignableFromDeserializers(Message.class, new ProtobufMessageDeserializer()),
simpleDeserializers
);
CompositeDeserializers compositeDeserializers = new CompositeDeserializers(deserializersList);
CustomDeserializerSimpleModule module = new CustomDeserializerSimpleModule(compositeDeserializers);
module.addSerializer(Message.class, new ProtobufMessageSerializer());
mapper.registerModule(module);
return mapper;
}
private ObjectMapper getObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
// Serialization
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// Deserialization
mapper.disable(SerializationFeature.INDENT_OUTPUT);
SimpleDeserializers simpleDeserializers = new SimpleDeserializers();
simpleDeserializers.addDeserializer(String.class, new TrimmingStringDeserializer());
List<Deserializers> deserializersList = Arrays.asList(
new AssignableFromDeserializers(Message.class, new ProtobufMessageDeserializer()),
simpleDeserializers
);
CompositeDeserializers compositeDeserializers = new CompositeDeserializers(deserializersList);
CustomDeserializerSimpleModule module = new CustomDeserializerSimpleModule(compositeDeserializers);
module.addSerializer(Message.class, new ProtobufMessageSerializer());
mapper.registerModule(module);
return mapper;
}
@Override
public void setupModule(final SetupContext context) {
final SimpleSerializers serializers = new SimpleSerializers();
serializers.addSerializer(CurrencyUnit.class, new CurrencyUnitSerializer());
serializers.addSerializer(MonetaryAmount.class, new MonetaryAmountSerializer(names, writer, formatFactory));
context.addSerializers(serializers);
final SimpleDeserializers deserializers = new SimpleDeserializers();
deserializers.addDeserializer(CurrencyUnit.class, new CurrencyUnitDeserializer());
deserializers.addDeserializer(MonetaryAmount.class, new MonetaryAmountDeserializer<>(amountFactory, names));
// for reading into concrete implementation types
deserializers.addDeserializer(Money.class, new MonetaryAmountDeserializer<>(moneyFactory, names));
deserializers.addDeserializer(FastMoney.class, new MonetaryAmountDeserializer<>(fastMoneyFactory, names));
deserializers.addDeserializer(RoundedMoney.class, new MonetaryAmountDeserializer<>(roundedMoneyFactory, names));
context.addDeserializers(deserializers);
}
private StrictObjectMapper(BlockAllocator allocator)
{
super(JSON_FACTORY);
_serializerFactory = SERIALIZER_FACTORY;
ImmutableMap<Class<?>, JsonDeserializer<?>> desers = ImmutableMap.of(
FederationRequest.class, createRequestDeserializer(allocator),
FederationResponse.class, createResponseDeserializer(allocator),
LambdaFunctionException.class, new LambdaFunctionExceptionSerDe.Deserializer());
SimpleDeserializers deserializers = new SimpleDeserializers(desers);
DeserializerFactoryConfig dConfig = new DeserializerFactoryConfig().withAdditionalDeserializers(deserializers);
_deserializationContext = new DefaultDeserializationContext.Impl(new StrictDeserializerFactory(dConfig));
// required by LambdaInvokerFactory
disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
}
@Override
public void setupModule(SetupContext context) {
SimpleSerializers serializers = new SimpleSerializers();
serializers.addSerializer(Sort.class, new SortJsonComponent.SortSerializer());
context.addSerializers(serializers);
SimpleDeserializers deserializers = new SimpleDeserializers();
deserializers.addDeserializer(Sort.class,
new SortJsonComponent.SortDeserializer());
context.addDeserializers(deserializers);
}
@Override
public void setupModule(SetupContext setupContext) {
SimpleSerializers serializers = new SimpleSerializers();
addSerializers(serializers);
setupContext.addSerializers(serializers);
SimpleDeserializers deserializers = new SimpleDeserializers();
addDeserializers(deserializers);
setupContext.addDeserializers(deserializers);
}
/**
* Method called by {@link ObjectMapper} when module is registered.
* It is called to let module register functionality it provides,
* using callback methods passed-in context object exposes.
*/
@Override
public void setupModule(SetupContext setupContext) {
SimpleSerializers serializers = new SimpleSerializers();
addSerializers(serializers);
setupContext.addSerializers(serializers);
SimpleDeserializers deserializers = new SimpleDeserializers();
addDeserializers(deserializers);
setupContext.addDeserializers(deserializers);
setupContext.addBeanDeserializerModifier(new KeeperBeanDeserializerModifier());
}
private static void registerDeserializer(ConfigRegistry config, JsonDeserializer<TestObject> deserializer) {
ObjectMapper objectMapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.setDeserializers(new SimpleDeserializers(Collections.singletonMap(TestObject.class, deserializer)));
objectMapper.registerModule(module);
config.get(RosettaObjectMapper.class).setObjectMapper(objectMapper);
}
@Override
public void setupModule(SetupContext context) {
context.addSerializers(new SimpleSerializers(Collections.singletonList(new SchemaSerializer())));
context.addDeserializers(new SimpleDeserializers(Collections.singletonMap(Schema.class, new SchemaDeserializer())));
}
@SuppressWarnings("unchecked")
private void addDeserializers(SimpleDeserializers deserializers) {
}
@SuppressWarnings("unchecked")
private void addDeserializers(SimpleDeserializers deserializers) {
deserializers.addDeserializer(MimeType.class, new MimeTypeDeserializer());
deserializers.addDeserializer(Keeper.class, (JsonDeserializer) new KeeperDeserializer());
}
@Override
public void setupModule(SetupContext context) {
SimpleSerializers serializers = new SimpleSerializers();
serializers.addSerializer(new MessageSerializer(config));
serializers.addSerializer(new DurationSerializer());
serializers.addSerializer(new FieldMaskSerializer());
serializers.addSerializer(new ListValueSerializer());
serializers.addSerializer(new NullValueSerializer());
serializers.addSerializer(new StructSerializer());
serializers.addSerializer(new TimestampSerializer());
serializers.addSerializer(new ValueSerializer());
serializers.addSerializer(new WrappedPrimitiveSerializer<>(DoubleValue.class));
serializers.addSerializer(new WrappedPrimitiveSerializer<>(FloatValue.class));
serializers.addSerializer(new WrappedPrimitiveSerializer<>(Int64Value.class));
serializers.addSerializer(new WrappedPrimitiveSerializer<>(UInt64Value.class));
serializers.addSerializer(new WrappedPrimitiveSerializer<>(Int32Value.class));
serializers.addSerializer(new WrappedPrimitiveSerializer<>(UInt32Value.class));
serializers.addSerializer(new WrappedPrimitiveSerializer<>(BoolValue.class));
serializers.addSerializer(new WrappedPrimitiveSerializer<>(StringValue.class));
serializers.addSerializer(new WrappedPrimitiveSerializer<>(BytesValue.class));
context.addSerializers(serializers);
context.addDeserializers(new MessageDeserializerFactory(config));
SimpleDeserializers deserializers = new SimpleDeserializers();
deserializers.addDeserializer(Duration.class, new DurationDeserializer());
deserializers.addDeserializer(FieldMask.class, new FieldMaskDeserializer());
deserializers.addDeserializer(ListValue.class, new ListValueDeserializer().buildAtEnd());
deserializers.addDeserializer(NullValue.class, new NullValueDeserializer());
deserializers.addDeserializer(Struct.class, new StructDeserializer().buildAtEnd());
deserializers.addDeserializer(Timestamp.class, new TimestampDeserializer());
deserializers.addDeserializer(Value.class, new ValueDeserializer().buildAtEnd());
deserializers.addDeserializer(DoubleValue.class, wrappedPrimitiveDeserializer(DoubleValue.class));
deserializers.addDeserializer(FloatValue.class, wrappedPrimitiveDeserializer(FloatValue.class));
deserializers.addDeserializer(Int64Value.class, wrappedPrimitiveDeserializer(Int64Value.class));
deserializers.addDeserializer(UInt64Value.class, wrappedPrimitiveDeserializer(UInt64Value.class));
deserializers.addDeserializer(Int32Value.class, wrappedPrimitiveDeserializer(Int32Value.class));
deserializers.addDeserializer(UInt32Value.class, wrappedPrimitiveDeserializer(UInt32Value.class));
deserializers.addDeserializer(BoolValue.class, wrappedPrimitiveDeserializer(BoolValue.class));
deserializers.addDeserializer(StringValue.class, wrappedPrimitiveDeserializer(StringValue.class));
deserializers.addDeserializer(BytesValue.class, wrappedPrimitiveDeserializer(BytesValue.class));
context.addDeserializers(deserializers);
context.setMixInAnnotations(MessageOrBuilder.class, MessageOrBuilderMixin.class);
}