json数据绑定返回选定值的问题


<%--
  Created by IntelliJ IDEA.
  User: goudiyuan
  Date: 2023/5/31
  Time: 15:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
    <title>选择学生</title>
    <script type="text/javascript"
            src="${pageContext.request.contextPath }/js/jquery-3.6.0.js"></script>
</head>
<body>
您好:${ USER_SESSION.name }
<a href="${ pageContext.request.contextPath }/logout">退出</a>
<form id="students" action="${pageContext.request.contextPath }/getStudents" method="post">

    <table width="220px" border="1">
        <tr>
            <td>选择</td>
            <td>id</td>
            <td>姓名</td>
            <td>班级</td>
        </tr>

        <tr>
            <td>
                <input name="students" value="1" type="checkbox">
            </td>
            <td>
                <input name="id" value="1" id="id" type="text">
            </td>
            <td>
                <input name="name" value="张三" id="name" type="text">
            </td>
            <td>
                <input name="cid" value="1" id="cid" type="text">
            </td>

        </tr>

        <tr>
            <td>
                <input name="students" value="2" type="checkbox">
            </td>
            <td>
                <input name="id" value="2" id="id2" type="text">
            </td>
            <td>
                <input name="name" value="李四" id="name2" type="text">
            </td>
            <td>
                <input name="cid" value="2" id="cid2" type="text">
            </td>
        </tr>

        <tr>
            <td>
                <input name="students" value="3" type="checkbox">
            </td>
            <td>
                <input name="id" value="3" id="id3" type="text">
            </td>
            <td>
                <input name="name" value="王五" id="name3" type="text">
            </td>
            <td>
                <input name="cid" value="1" id="cid3" type="text">
            </td>
        </tr>

        <tr>
            <td>
                <input name="students" value="4" type="checkbox">
            </td>
            <td>
                <input name="id" value="4" id="id4" type="text">
            </td>
            <td>
                <input name="name" value="赵六" id="name4" type="text">
            </td>
            <td>
                <input name="cid" value="2" id="cid4" type="text">
            </td>
        </tr>

    </table>
    <input type="submit" value="提交学生" onclick="submitStudents()"/>

</form>

<script type="text/javascript">

    function submitStudents() {
        var stu1 = {id: $("#id").val(), name: $("#name").val(), cid:$("#cid").val()}
        var stu2 = {id: $("#id2").val(), name: $("#name2").val(), cid:$("#cid2").val()}
        var stu3 = {id: $("#id3").val(), name: $("#name3").val(), cid:$("#cid3").val()}
        var stu4 = {id: $("#id4").val(), name: $("#name4").val(), cid:$("#cid4").val()}
        $.ajax({
            url: "${pageContext.request.contextPath }/getStudentList",
            type: "post",
            data: JSON.stringify([stu1,stu2,stu3,stu4]),
            contentType: "application/json;charset=UTF-8",
            dataType: "json",
            success: function (response) {
                alert(response);
            }
        });
    }
</script>


</body>
</html>



如上面代码是我在java ee中写的想要通过json数据绑定返回我选中的值,如图:

img

但是由于这段代码:

data: JSON.stringify([stu1,stu2,stu3,stu4])

他就自动每次都返回了所有的值

img

如何做到只返回我想要的值呢?需要我把选中的值再拿来重新做一个表格。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7784213
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Json中返回时间为时间戳的问题 通过制作工具类解决
  • 除此之外, 这篇博客: Java前后端分离定义统一结果返回类中的 1.一般有以下几种json返回形式: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 列表:

    {
      "code": 200,
      "message": "成功",
      "data": [
        {
          "id": 2,
          "roleName": "系统管理员"
        }
      ],
      "ok": true
    }

    分页:

    {
      "code": 200,
      "message": "成功",
      "data": {
        "records": [
          {
            "id": 2,
            "roleName": "系统管理员"
          },
          {
            "id": 3,
            "name": "普通管理员"
          }
        ],
        "total": 10,
        "size": 3,
        "current": 1,
        "orders": [],
        "hitCount": false,
        "searchCount": true,
        "pages": 2
      },
      "ok": true
    }

    无数据返回:

    {
      "code": 200,
      "message": "成功",
      "data": null,
      "ok": true
    }

    失败:

    {
      "code": 201,
      "message": "失败",
      "data": null,
      "ok": false
    }
  • 您还可以看一下 刘高联老师的亲自动手写一个深度学习框架课程中的 代码实践:利用json定义网络结构小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    回答:

    要实现只返回想要的值,需要手动构建一个POJO类,作为数据传输的中介类,实现JSON数据和Java对象的转换。在该类中只包含想要返回的字段,忽略其他字段即可。

    以下是一个示例代码:

    首先新建一个POJO类,例如名称为UserInfo,只包含需要返回的字段:

    public class UserInfo {
        private String name;
        private int age;
        // ... getter/setter method
    }
    

    然后修改原代码中数据绑定的部分,使用该POJO类作为数据传输的中介类:

    // 假设原先从数据库查询到的数据已经存储在一个User对象中
    User user = userDao.queryById(userId);
    // 新建中介类UserInfo
    UserInfo userInfo = new UserInfo();
    // 设置需要的字段值
    userInfo.setName(user.getName());
    userInfo.setAge(user.getAge());
    // 使用JSON库将UserInfo对象转换为JSON格式返回给前端
    String json = JSON.toJSONString(userInfo);
    return json;
    

    以上代码中使用了阿里巴巴的fastjson库进行JSON的转换,需要在项目中引入该库的依赖。