Here is my code:
```java
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TestJackson {
static interface Entity {
String getName();
}
@Test
public void test() throws JsonProcessingException {
String json = "{\"name\": \"good\"}";
ObjectMapper objectMapper = new ObjectMapper();
Entity entity = objectMapper.readValue(json, Entity.class);
// Entity entity = objectMapper.readValue(json, new TypeReference<Entity>(){});
System.out.println("name: " + entity.getName());
}
}
```
Get exception:
```java
Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `io.gitlab.donespeak.turtal.TestJackson$Entity` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: (String)"{"name": "good"}"; line: 1, column: 1]
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1589)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1055)
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:265)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3205)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3173)
at io.gitlab.donespeak.turtal.TestJackson.test(TestJackson.java:23)
at io.gitlab.donespeak.turtal.TestJackson.main(TestJackson.java:10)
Process finished with exit code 1
```
I think dynamic proxy could be a solution for deserializing json to a interface.