Spring Boot返回JSON对象前端显示undefined问题咨询
解决Spring Boot返回JSON后前端属性undefined的问题
这个问题大概率是Java对象序列化后的JSON字段名和前端访问的字段名不匹配导致的,咱们一步步来分析和解决:
核心原因
你后端的LoanFilterServiceResponseDto里,调用了setSuccess(true),对应的Java属性应该是success,Spring Boot默认使用Jackson进行JSON序列化,对于boolean类型的属性,当getter方法是isSuccess()时,序列化后的JSON字段名会是success(而非isSuccess)。但你前端代码里用serviceResponse.isSuccess去访问,自然就会拿到undefined。
快速解决方案
方案1:修改前端代码(最简单)
直接把前端访问的字段改成JSON实际返回的success:
function onFilterProductsSuccess(serviceResponse) { alert("serviceResponse.success: "+ serviceResponse.success); };
方案2:修改后端DTO,指定JSON字段名(如果必须用isSuccess)
如果前端不想改代码,可以在DTO的success属性上添加Jackson的@JsonProperty注解,强制指定序列化后的字段名:
import com.fasterxml.jackson.annotation.JsonProperty; public class LoanFilterServiceResponseDto { @JsonProperty("isSuccess") private boolean success; // 其他属性... public boolean isSuccess() { return success; } public void setSuccess(boolean success) { this.success = success; } // 其他getter/setter... }
排查验证步骤
为了确保问题定位准确,你可以做以下验证:
- 打开浏览器开发者工具(F12),切换到Network标签,找到这个POST请求,查看响应的JSON内容,确认实际返回的字段名到底是
success还是isSuccess。 - 检查后端DTO的getter/setter是否正确,比如
isSuccess()是否对应success属性,有没有拼写错误。 - 确认后端响应的
Content-Type是application/json,避免前端无法正确解析JSON。
内容的提问来源于stack exchange,提问作者learner_me
相关产品推荐
相关产品推荐

