私はpojo DTNodo
を持っています。再帰的なプロパティはList<DTNodo>
です。 jacksonを使用してjsonスキーマを生成しようとすると、私はjava.lang.StackOverflowError
の例外を受け取ります。Jackson ObjectMapperは再帰的データ型でエラーを返します
Listプロパティを削除しても正常に動作するため、問題は再帰にあります。
ObjectMapperにこの再帰を伝えて適切に処理する方法はありますか?このjsonスキーマを生成する他の方法はありますか?
DTNodoクラス
public class DTNodo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer idNodo;
private String codigo;
private String descripcion;
private String detalle;
private Integer orden;
private List<DTNodo> hijos;
public Integer getIdNodo() {
return idNodo;
}
public void setIdNodo(Integer idNodo) {
this.idNodo = idNodo;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public String getDetalle() {
return detalle;
}
public void setDetalle(String detalle) {
this.detalle = detalle;
}
public Integer getOrden() {
return orden;
}
public void setOrden(Integer orden) {
this.orden = orden;
}
public List<DTNodo> getHijos() {
return hijos;
}
public void setHijos(List<DTNodo> hijos) {
this.hijos = hijos;
}
}
IはObjectMapper.generateJsonSchemaが廃止されjsonschema
public static String getJsonSchema(Class<?> clazz) {
ObjectMapper mapper = new ObjectMapper();
JsonSchema schema;
try {
schema = mapper.generateJsonSchema(clazz);
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
} catch (IOException e) {
return "Error al generar JsonSchema: " + e.getMessage();
}
}
バージョン:
あなたは@JsonManagedReference、@JsonBackReference に詳細情報を使用することができますか? – dnault
私はcom.fasterxml.jackson.core 2.8.5を使用しています。以前は、org.codehaus.jackson 1.9.13を使用していました。どちらも私に同じエラーを与えました。 – aleviera