用Java创建的Spring Boot项目中,如何传递JSON对象呢?

在Spring Boot项目中,传递JSON对象次数比较多,简而言之(笔者前面写的传递一个属性,多个属性,对象,数组,List集合等各种程序,都用的比较少,仅是铺垫)

那么,用Java创建的Spring Boot项目中,如何传递JSON对象呢?

本文便带领大家走进在Spring Boot项目中如何传递JSON对象

先定义一个Person对象,里面有id,name,age属性,并重写getter ,setter ,toString等方法!

复制代码
package com.example.demo.controller;


//将参数封装为对象
public class Person {
    Integer id;
    String name;
    Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

那么,我们不用管前端如何传递来的JOSN数据,作为后端只需要处理前端传递来的数据即可!

复制代码
@RestController
@RequestMapping("/param")
public class ParamController {
    
    @RequestMapping("/m7")
    public String m7(Person person){
        return " 接收到的参数:Person:"+person.toString();
    }
}

问题:

那么,我们利用Postman来进行传递JSON数据:

复制代码
{
    "id":5,
    "name":"zhangsan",
    "age":10
}

启动程序,我们在Postman中的运行结果为:

那么,此刻我们便深深的怀疑,到底那儿出错了??前端传递来的JSON数据没有错误!!主要错误是在后端!!

根据Fiddler Classic的抓包结果我们也可以看出:前端传递来的JSON数据没有错误!!主要错误是在后端!!

其实这个主要还是由于person默认的是key--value型,默认从Url中拿,当我们在Url中随便选择一个参数对其赋值,那么,此时我们的效果为:

在Postman中输入:http://localhost:8080/param/m7?id=5

同理,在浏览器中也有着相同的效果:

那么,对于该问题,我们该如何处理呢??

解决方案:

传递JSON数据,需要使用@RequestBoby注解来搭配使用!

参考代码为:

复制代码
@RestController
@RequestMapping("/param")
public class ParamController {

    @RequestMapping("/m7")
    public String m7(@RequestBody Person person){
        return " 接收到的参数:Person:"+person.toString();
    }
}

当我们在Postman再次测试的时候可以发现:

成功解决Bug!!

在这里,我们需要注意的是:

传递JSON数据,使用@RequestBoby,我们传递的JSON数据是在请求正文中的,而不是在Url中传递的!!

相关推荐
Joy T3 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
估值探索者3 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘
RAN11426760083 小时前
1.3第一个程序的介绍
开发语言·qt
天若有情6733 小时前
C++花式魔改!手写头文件复刻Java语法,彻底打破编码思维定式
java·c++·语言做语言·jac++
blue_ice .4 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发
远翔调光芯片^138287988724 小时前
ECP5702能芯科技PD取电芯片在市场上的优势有哪些?
开发语言·人工智能·单片机·嵌入式硬件·智能家居
西峰u4 小时前
Java单例模式|从基础到多线程安全
java·java单例模式
ClinicTech4 小时前
实验室洗瓶机的清洗系统架构与自动化控制解析
java·python
linmengmeng_13145 小时前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
高级程序源5 小时前
django大学生创新创业项目管理系统94923-计算机课程设计、毕业设计
javascript·vue.js·spring boot·后端·python·django·课程设计