首页 > 其他分享 >书城9 - 前后端 json 数据的交互

书城9 - 前后端 json 数据的交互

时间:2023-02-01 16:13:45浏览次数:52  
标签:teacherMap response json student new 交互 Gson 书城

解析请求中的 json 数据,返回 json 数据

1. 加入 Gson.jar 包

2. 通过输入流读取数据,使用 Gson 对象解析字符串

  • protected void requestBodyJSON(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        // 1.由于请求体数据有可能很大,所以Servlet标准在设计API的时候要求我们通过输入流来读取
        BufferedReader reader = request.getReader();
    
        // 2.创建StringBuilder对象来累加存储从请求体中读取到的每一行
        StringBuilder builder = new StringBuilder();
    
        // 3.声明临时变量
        String bufferStr = null;
    
        // 4.循环读取
        while((bufferStr = reader.readLine()) != null) {
            builder.append(bufferStr);
        }
    
        // 5.关闭流
        reader.close();
    
        // 6.累加的结果就是整个请求体
        String requestBody = builder.toString();
    
        // 7.创建Gson对象用于解析JSON字符串
        Gson gson = new Gson();
    
        // 8.将JSON字符串还原为Java对象
        Student student = gson.fromJson(requestBody, Student.class);
        System.out.println("student = " + student);
    
        System.out.println("requestBody = " + requestBody);
    
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("服务器端返回普通文本字符串作为响应");
    }
    

3. 服务器封装 json 数据发送给客户端

  • protected void responseBodyJSON(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        // 1.准备数据对象
        Student student = new Student();
        student.setStuId(10);
        student.setStuName("tom");
        student.setSchool(new School(11,"atguigu"));
        student.setSubjectList(Arrays.asList(new Subject("java", 95.5), new Subject("php", 93.3)));
    
        Map<String, Teacher> teacherMap = new HashMap<>();
        teacherMap.put("t1", new Teacher("lili", 25));
        teacherMap.put("t2", new Teacher("mary", 26));
        teacherMap.put("t3", new Teacher("katty", 27));
    
        student.setTeacherMap(teacherMap);
    
        // 2.创建Gson对象
        Gson gson = new Gson();
    
        // 3.将Java对象转换为JSON对象
        String json = gson.toJson(student);
    
        // 4.设置响应体的内容类型
        response.setContentType("application/json;charset=UTF-8");
        response.getWriter().write(json);
    
    }
    

Axios

标签:teacherMap,response,json,student,new,交互,Gson,书城
From: https://www.cnblogs.com/Ashen-/p/17083145.html

相关文章

  • 数据交换格式JSON和xml
    数据交换格式,就是服务器端与客户端之间进行数据传输与交换的格式前端领域,经常提及的两种数据交换格式分别是XML和JSON。其中XML用的非常少,所以,我们重点要学习的数据......
  • python json to txt
    defread(self):file_path=os.path.join("db","alert.json")ifos.path.exists(file_path):file_object=open(file_path,mode='r',encodin......
  • Go使用post方法将json数据传给一个url(后端接口)
       最近做的一个项目是采用前后端分离模式写前端,后端是fabric区块链,提供接口,需要使用post方法进行访问。如上一章注册用户,就是需要把用户名、账户信息转换成json形式......
  • spring boot——json解析示例——fastjson——使用fastJson将json与对象、集合、数组
                 ......
  • 1.31 wlx 魔怔 9 解法交互题小结
    参考题解地址1.从树上任意一个节点开始,跳到其随机一个后代,跳到叶子的期望次数为\(H_{siz_u}=\ln(siz_u)\)。证明:首先考虑一条链的情况。设在第\(i\)个点期望次数为......
  • Python cjson序列化与反序列化
    cJSONcJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。cJSON项目托管在Github上,仓库地址如下:https://github.com/DaveGamble/c......
  • spring boot——json解析示例——fastjson
    多层嵌套JSON类型数据解析简单来说:“key”:“value”-->此时value为String “key":0-->此时value为int “key”:{“k1”:“v1”}-->此时value为JSONObject......
  • Java(FastJson) 解析 JSON文件
    依赖<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency>JSON文件内容publicclassMy......
  • 书城4 - 验证码 Kaptcha
    Kaptcha验证码为什么使用验证码验证码:通过让用户填写验证码并在服务器端检查,防止浏览器端使用程序恶意访问。如何实现验证码Kaptcha如何使用添加jar包......
  • 书城5 - 注册实现
    publicStringregist(StringvarifyCode,Stringuname,Stringpwd,Stringemail,HttpSessionsession,HttpServletResponseresponse)throwsIOException{O......