I’d be very very glad if you could answer a short user question I’m completely
stuck with. 😊
Johnzon is able to parse JSON object into Java Map while respecting custom
adapters:
// Works well: Uses custom Adapter<UUID, String>
Map<UUID, Foo> map = jsonb.fromJson("{ \"" + uuid + "\": { \"name\": \"Lala\" }
}", new JohnzonParameterizedType(Map.class, UUID.class, Foo.class));
Now let’s assume we do not want to get a complete Map but just a single
Map.Entry, as we know for sure the JSON string only contains exactly just one
single key-value-pair:
JsonbConfig jsonbConfig = new JsonbConfig().withAdapters(new UuidAdapter(), new
MapEntryAdapter<UUID, Foo>());
// Fails with "Can't map Entry<UUID, Foo>"
Map.Entry<UUID, Foo> entry = jsonb.fromJson("{ \"" + uuid + "\": { \"name\":
\"Lala\" } }", new JohnzonParameterizedType(Map.Entry.class, UUID.class,
Foo.class));
public class MapEntryAdapter<K, V> implements JsonbAdapter<Map.Entry<K, V>,
Map<K, V>> {
@Override public Map<K, V> adaptToJson(Entry<K, V> obj) throws Exception {
… }
@Override public Entry<K, V> adaptFromJson(Map<K, V> obj) throws Exception
{ … }
}
Strange but true, this does not work but complains it cannot map Entry<UUID,
Foo> -- it seems it cannot „see“ the correctly registered adapter (not even if
I replace <K, V> by <UUID, String> manually in the code).
So the question is: Where is the fault? Did I try something (what?) which is
forbidden in JSON-B? Is this a bug in Johnzon?
Actually I assume it is my personal fault (as so often), but I just cannot see
where… 😉
Thanks a lot for your kind help!
-Markus