当我尝试使用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&amp;&amp; mvn exec:java然后将浏览器指向localhost:8080 / games
PS:必需的Java 8和MongoDB
答案 0 :(得分:0)
我设法解决了这个问题。
我不得不从界面中删除。
现在它看起来像这样
public interface Item extends SpreadSheet {
}
public class Civ implements Item {
}
问题是我在类型中的Civ类中有相同的对象。
我认为我不需要这种类型,所以我很好