报错:Could not write JSON: Conflicting getter definitions for property “sno“: org.qust.entity.BaseInfo

目录

bug求助

一、遇到问题

二、 出现问题的原因

三、解决办法


bug求助

 读者手册(必读)_csdn文章评分怎么看_云边的快乐猫的博客-CSDN博客

一、遇到问题

在运行项目代码的时候,发现数据请求不到

错误特征一 

黄色的是定位到报错的具体字段 

org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Conflicting getter definitions for property "sno": org.qust.entity.BaseInfo#getSno(0 params) vs org.qust.entity.BaseInfo#getsno(0 params); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Conflicting getter definitions for property "sno": org.qust.entity.BaseInfo#getSno(0 params) vs org.qust.entity.BaseInfo#getsno(0 params) (through reference chain: org.qust.common.Result["data"]->org.qust.common.PageResult["rows"]->java.util.Collections$UnmodifiableRandomAccessList[0])

报错:Could not write JSON: Conflicting getter definitions for property “sno“: org.qust.entity.BaseInfo_第1张图片

 

 错误特征二

atorg.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal 

报错:Could not write JSON: Conflicting getter definitions for property “sno“: org.qust.entity.BaseInfo_第2张图片 

具体表现 

报错:Could not write JSON: Conflicting getter definitions for property “sno“: org.qust.entity.BaseInfo_第3张图片

二、 出现问题的原因

出现这个问题的原因是JSON的原因。就是在实体属性类里面有两个get方法冲突了,要把其中一个加上注解来让调用的方法或者类那些区分开来。

这个错误消息表明在尝试将 Java 对象转换为 JSON 格式时,出现了冲突的 getter 方法定义。错误消息的根本问题是:在您的 Java 类 org.qust.entity.BaseInfo 中,存在两个具有不同命名的 getter 方法来获取属性 "sno" 的值,这导致了冲突。

详解:

这个错误消息表示在使用 Jackson 库将 Java 对象转换为 JSON 格式时发生了问题,因为它检测到了属性 "sno" 存在多个冲突的 getter 方法,这些方法的命名方式不一致。具体来说,它发现了以下两个方法:

  1. org.qust.entity.BaseInfo#getSno(0 params)
  2. org.qust.entity.BaseInfo#getsno(0 params)

Jackson 库通常会根据 JavaBean 规范来识别 getter 方法,以确定如何从对象中提取属性的值。在 JavaBean 规范中,getter 方法的命名约定是以 "get" 开头,后面跟着属性的名称,首字母大写。例如,属性 "sno" 的 getter 方法应该命名为 getSno

由于您的 Java 类中存在两个具有不同命名的 getter 方法,即 getSnogetsno,Jackson 不知道应该使用哪个来获取 "sno" 属性的值,因此发生了冲突。

要解决这个问题,您可以采取以下步骤之一:

  1. 重命名方法: 将其中一个 getter 方法的名称修改为符合 JavaBean 命名约定的格式,例如将 getsno 改为 getSno

  2. 使用注解: 使用 Jackson 提供的注解来明确告诉 Jackson 应该使用哪个 getter 方法来访问属性。例如,您可以使用 @JsonProperty 注解来指定属性的名称,以及要使用的 getter 方法的名称。

选择哪种方法取决于您的项目需求和代码结构,但目标是确保只有一个适当命名的 getter 方法来访问属性 "sno"。

三、解决办法

1.在实体属性类的get方法上面加上@JsonIgnore这个注解

具体是哪个类呢?那就看报错信息里面的字段,根据字段去找是哪个实体类

具体是什么方法呢?那就是在相同的get方法上面试试,这两个方法一个命名大写,一个命名小写,调用的方法就不知道调用的是哪个,那就用注解来帮忙区分就好了

ps:一般报Could not write JSON这个错误,都可以通过加这个注解去解决

 @JsonIgnore

报错:Could not write JSON: Conflicting getter definitions for property “sno“: org.qust.entity.BaseInfo_第4张图片 

2.解决成功

报错:Could not write JSON: Conflicting getter definitions for property “sno“: org.qust.entity.BaseInfo_第5张图片

 

有什么问题都可以评论区留言,看见都会回复的

如果你觉得本篇文章对你有所帮助的,把“文章有帮助的”打在评论区

多多支持吧!!!

点赞收藏评论

你可能感兴趣的:(#,后端JavaBug,json,Json注解,实体类方法冲突,命名规范,注解区分)