com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain)

Shervin Asgari

I am getting this exception when I try to convert my object to JSON using Jackson.

I have a pretty simple interface

public interface Spreadsheet {

    ExcelSheet getSheetName();
}

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include= JsonTypeInfo.As.WRAPPER_OBJECT, property="type")
@JsonSubTypes({
        @JsonSubTypes.Type(value=Civ.class, name="civ"),
        @JsonSubTypes.Type(value=GreatPerson.class, name="greatperson"),
        @JsonSubTypes.Type(value=Wonder.class, name="wonder")
})
public interface Item<T> extends Spreadsheet {

//some methods
}

@JsonTypeName("civ")
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "objectType")
public class Civ implements Item<Civ> {

//Implementation
}

Then a class using Items

public class PBF {
    private String id;

    private List<Player> players = Lists.newArrayList();
    private List<Item> items = Lists.newArrayList();
}

When I try to create a JSON using this code, I get the exception defined in the title

 ObjectMapper mapper = new ObjectMapper();
 String json = mapper.writeValueAsString(pbf);

The entire source code is on Github. If you want to reproduce, just clone the repo, and run `mvn clean install && mvn exec:java then point your browser to localhost:8080/games

PS: Required Java 8 and MongoDB

Source code from Github

Shervin Asgari

I managed to fix it.

I had to remove the from the interface.

So now it looks like this

public interface Item extends SpreadSheet {
}

public class Civ implements Item {
}

The problem was that I had the same object in for instance Civ class in the type.

I don't think I need the type anyways, so I am good

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain)

From Dev

Direct self-reference leading to cycle Superclass issue JSON

From Dev

error: com.fasterxml.jackson.databind.JsonMappingException: No serializer found

From Dev

How to solve Direct self-reference leading to cycle error saving ActorRef on redis in playframework 2.4.6

From Dev

dynamic json response: Could not read JSON: N/A (through reference chain) jackson fasterxml

From Dev

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize out of START_ARRAY token

From Dev

com.fasterxml.jackson.databind.JsonMappingException: Duplicate creator property "id" (index 0 vs 1)

From Dev

Grails 3.1.8 : Spring Rest Docs using Rest Assured giving PayloadHandlingException: com.fasterxml.jackson.databind.JsonMappingException

From Dev

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of : poja class no suitable constructor found

From Dev

Grails 3.1.8 : Spring Rest Docs using Rest Assured giving PayloadHandlingException: com.fasterxml.jackson.databind.JsonMappingException

From Dev

com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role

From Dev

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of org.springframework.data.domain.Sort out of START_ARRAY token

From Dev

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class java.time.LocalDateTime] from String

From Dev

Android NoClassDefFoundError for com/fasterxml/jackson/databind/ObjectMapper

From Dev

Jackson error com.fasterxml.jackson.databind.ser.ContainerSerializer: method <init>(Lcom/fasterxml/jackson/databind/JavaType;)V not found

From Java

Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

From Java

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Symbol"

From Dev

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field

From Dev

Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

From Dev

Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

From Dev

Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

From Dev

resolving com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field

From Dev

Javascript prototype chain self reference

From Dev

How to break a direct reference cycle in CPython

From Dev

How to break a direct reference cycle in CPython

From Dev

com.fasterxml.jackson.databind.node.ObjectNode cannot be converted to org.codehaus.jackson.node.ObjectNode

From Dev

Understanding direct self-reference in Haskell

From Dev

How to filter properties on a self reference using Jackson?

From Dev

Convert javax.json.JsonObject to com.fasterxml.jackson.databind.JsonNode

Related Related

  1. 1

    com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain)

  2. 2

    Direct self-reference leading to cycle Superclass issue JSON

  3. 3

    error: com.fasterxml.jackson.databind.JsonMappingException: No serializer found

  4. 4

    How to solve Direct self-reference leading to cycle error saving ActorRef on redis in playframework 2.4.6

  5. 5

    dynamic json response: Could not read JSON: N/A (through reference chain) jackson fasterxml

  6. 6

    com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize out of START_ARRAY token

  7. 7

    com.fasterxml.jackson.databind.JsonMappingException: Duplicate creator property "id" (index 0 vs 1)

  8. 8

    Grails 3.1.8 : Spring Rest Docs using Rest Assured giving PayloadHandlingException: com.fasterxml.jackson.databind.JsonMappingException

  9. 9

    com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of : poja class no suitable constructor found

  10. 10

    Grails 3.1.8 : Spring Rest Docs using Rest Assured giving PayloadHandlingException: com.fasterxml.jackson.databind.JsonMappingException

  11. 11

    com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role

  12. 12

    com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of org.springframework.data.domain.Sort out of START_ARRAY token

  13. 13

    com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class java.time.LocalDateTime] from String

  14. 14

    Android NoClassDefFoundError for com/fasterxml/jackson/databind/ObjectMapper

  15. 15

    Jackson error com.fasterxml.jackson.databind.ser.ContainerSerializer: method <init>(Lcom/fasterxml/jackson/databind/JavaType;)V not found

  16. 16

    Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

  17. 17

    com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Symbol"

  18. 18

    com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field

  19. 19

    Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

  20. 20

    Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

  21. 21

    Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

  22. 22

    resolving com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field

  23. 23

    Javascript prototype chain self reference

  24. 24

    How to break a direct reference cycle in CPython

  25. 25

    How to break a direct reference cycle in CPython

  26. 26

    com.fasterxml.jackson.databind.node.ObjectNode cannot be converted to org.codehaus.jackson.node.ObjectNode

  27. 27

    Understanding direct self-reference in Haskell

  28. 28

    How to filter properties on a self reference using Jackson?

  29. 29

    Convert javax.json.JsonObject to com.fasterxml.jackson.databind.JsonNode

HotTag

Archive