org.springframework.: Could not write JSON: Infinite recursion (*Error); nested exception is : Infinite recursion (*Error) (through reference chain: .dataset.["dataSetDef"]->[0]->["dataSourceDef"]->["dataSetDef"]->[0]->["dataSourceDef"]->["dataSetDef"]-
……
就转换成json栈溢出
解决方式:添加,公司用的FasterXML Jackson
@JsonProperty(access = .WRITE_ONLY)
知识点:
@JsonIgnore注解用来忽略某些字段,添加后不会序列化和反序列化
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段。这个注解还可以指定要忽略的字段,例如@JsonIgnoreProperties({ “password”, “secretKey” })
@JsonProperty:使用在某个属性上,这个注解有两个作用,第一是修改返回JSON数据的时候字段属性名(key)设定成value的指定值,第二个作用是配合属性access=.WRITE_ONLY表示属性只反序列化,直观效果就是返回的数据没有该属性。
WRITE_ONLY:仅做反序列化操作。前端拿不到这个数据
READ_ONLY:仅做序列化操作。
@JsonFormat可以帮我们完成格式转换。例如对于Date类型字段,如果不适用JsonFormat默认在rest返回的是long,如果我们使用@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”),就返回"2018-11-16 22:58:15"