在spring mvc 中使用@ResponseBody将对象封装为json发送给前端,前端接并提取在页面时候变成了undefined,是不是版本或者什么原因?

spring mvc 中Controller的代码

package cn.sxt.conntroller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class JsonConntroller {
    @RequestMapping("/json")
    @ResponseBody
    public List<User> json(){
        List<User> list = new ArrayList();
        list.add(new User("jake", 10, "men"));
        list.add(new User("nico", 10, "women"));
        list.add(new User("joker", 10, "men"));
        return list;
    }
}

index.jsp代码

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
    $(function(){
        $("#b").click(function(){
            $.post("json.do",function(data){
                var html="";

                for(var i = 0;i<data.length;i++){ 
                    html+="<tr><td>"+data[i].name+"</td><td>"+data[i].age+"</td><td>"+data[i].sex+"</td></tr>"
                }
                $("#content").html(html);
            });
        });
    });
</script>
</head>
<body>
    <input type="button" id="b" value="获取信息">
    <table width="80%" align="center">
        <tr>
            <td>name</td>
            <td>age</td>
            <td>sex</td>
        </tr>
        <tbody id="content"></tbody>
    </table>
</body>
</html>

在浏览器上面的展示图
图片说明
导入的jar包和jswen'jian
jackson-annotations-2.9.9.jar
jackson-core-2.9.9.jar
jackson-databind-2.9.9.jar
jquery-3.4.1.min.js

3个回答

直接console.log(data) 看看接收到的list是什么样子的,
怀疑是否是java 的 user对象没有设置get set方法?导致封装responseBody封装user为json的时候属性没有值

还有 我看你requestMapping里路径json
到前台url 又变成了json.do 确认一下是否有问题

fcmy0
fcmy0 是没有问题的
大约 2 个月之前 回复
fcmy0
fcmy0 requestMapping里路径json 到前台url 又变成了json.do
大约 2 个月之前 回复
fcmy0
fcmy0 返回的list是对象里的值,并不是对象
大约 2 个月之前 回复
fcmy0
fcmy0 user对象中都有get和set方法console.log(data)返回的list
大约 2 个月之前 回复

你那controller里list只存放了三个对象,到页面怎么会显示那么多,这样有问题吧?

fcmy0
fcmy0 主要是什么问题?
大约 2 个月之前 回复

你是怎么会想到用for循环的,改成这样写试试

var html="";
$(data).each(function(i,e){
    html+="<tr><td>"+e.name+"</td><td>"+e.age+"</td><td>"+e.sex+"</td></tr>"
}
$("#content").html(html);
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问