Skip to content

Instantly share code, notes, and snippets.

@nikoncode
Created June 22, 2016 12:27
Show Gist options
  • Select an option

  • Save nikoncode/1b18512fcac8f58553f2f925c2ad09cb to your computer and use it in GitHub Desktop.

Select an option

Save nikoncode/1b18512fcac8f58553f2f925c2ad09cb to your computer and use it in GitHub Desktop.
ObjectMapper mapper = new ObjectMapper();
mapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.NON_FINAL, "@class");
ObjectMapper.DefaultTypeResolverBuilder resolverBuilder = new ObjectMapper.DefaultTypeResolverBuilder(ObjectMapper.DefaultTyping.NON_FINAL);
resolverBuilder.init(JsonTypeInfo.Id.CLASS, null).inclusion(JsonTypeInfo.As.PROPERTY);
resolverBuilder.typeProperty("@class");
mapper.setDefaultTyping(resolverBuilder);
SubtypeResolver subtypeResolver = mapper.getSubtypeResolver();
subtypeResolver.registerSubtypes(new NamedType(A.class, "Uvw"));
subtypeResolver.registerSubtypes(new NamedType(B.class, "Xyz"));
mapper.setSubtypeResolver(subtypeResolver);
A a = new A();
a.name = "1";
System.out.println(mapper.writeValueAsString(a));
B b = new B();
b.name = "2";
System.out.println(mapper.writeValueAsString(b));
System.out.println(mapper.readValue("{\"@class\":\"Library$B\",\"name\":\"1\"}", C.class));
Object c = new A();
aa(c);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment