package com.fasterxml.jackson.databind.module; import java.util.Map; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.*; public class TestKeyDeserializers extends BaseMapTest { static class FooKeyDeserializer extends KeyDeserializer { @Override public Foo deserializeKey(String key, DeserializationContext ctxt) { return new Foo(key); } } static class Foo { public String value; public Foo(String v) { value = v; } } /* /********************************************************** /* Unit tests /********************************************************** */ public void testKeyDeserializers() throws Exception { ObjectMapper mapper = new ObjectMapper(); SimpleModule mod = new SimpleModule("test", Version.unknownVersion()); mod.addKeyDeserializer(Foo.class, new FooKeyDeserializer()); mapper.registerModule(mod); Map<Foo,Integer> map = mapper.readValue("{\"a\":3}", new TypeReference<Map<Foo,Integer>>() {} ); assertNotNull(map); assertEquals(1, map.size()); Foo foo = map.keySet().iterator().next(); assertEquals("a", foo.value); } }