gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:34:12 25 4
gpt4 key购买 nike

当我尝试使用 Jackson 将对象转换为 JSON 时,出现此异常。

我有一个非常简单的界面

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
}

然后是一个使用 Items 的类

public class PBF {
private String id;

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

当我尝试使用此代码创建 JSON 时,出现标题中定义的异常

 ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(pbf);
<小时/>

整个源代码位于 Github 上。如果您想重现,只需克隆存储库,然后运行 ​​`mvn clean install && mvn exec:java 然后将浏览器指向 localhost:8080/games

PS:需要 Java 8 和 MongoDB

Source code from Github

最佳答案

我设法修复了它。

我必须从界面中删除 。

现在看起来像这样

public interface Item extends SpreadSheet {
}

public class Civ implements Item {
}

问题是我在类型中的 Civ 类中有相同的对象。

无论如何,我认为我不需要这种类型,所以我很好

关于java - com.fasterxml.jackson.databind.JsonMappingException : Direct self-reference leading to cycle (through reference chain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25794733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com