首页 前端知识 【JavaEE】快速上手JSON:构建高效 Java 后端数据桥梁,开启交互新篇,以 @RequestBody 为引的探索之旅

【JavaEE】快速上手JSON:构建高效 Java 后端数据桥梁,开启交互新篇,以 @RequestBody 为引的探索之旅

2025-03-18 12:03:43 前端知识 前端哥 891 151 我要收藏

1.接收Json数据@RequestBody

如果对Json不了解,可以看2,3,4,5章。

接收Json数据需要使用注解@RequestBody

RequestBody: 请求正⽂,意思是这个注解作⽤在请求正⽂的数据绑定,请求参数必须在写在请求正⽂中。

后端实现:

// User 类
public class User {
private String name;
private Integer age;
private String sex;
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
复制
@RequestMapping("/basic")
@Controller
public class BasicController {
// http://127.0.0.1:8080/hello?name=lisi
@RequestMapping("/user")
@ResponseBody
public String user(@RequestBody User user) // @RequeatParam注解
{
return "接收到的参数user是:" + user.toString();
}
}
复制

运行后,在Postman工具中传参Json数据:
在这里插入图片描述

2.Json的概念

JSON:JavaScript Object Notation 【JavaScript 对象表⽰法】

JSON是⼀种轻量级的数据交互格式。 它基于 ECMAScript (欧洲计算机协会制定的js规范)的⼀个⼦集,采⽤完全独⽴于编程语⾔的⽂本格式来存储和表⽰数据。

简单来说:JSON就是⼀种数据格式, 有⾃⼰的格式和语法, 使⽤⽂本表⽰⼀个对象或数组的信息, 因此 JSON本质是字符串。 主要负责在不同的语⾔中数据传递和交换

类似于:
• 国际通⽤语⾔-英语
• 中国56个⺠族不同地区的通⽤语⾔-普通话 有⾃⼰的语法, 其他语⾔也认识。

JSONJavascript的关系
没有关系, 只是语法相似。 js开发者能更快的上⼿⽽已, 但是他的语法本⾝⽐较简单, 所以也很好学

3.Json语法

JSON 是⼀个字符串,其格式⾮常类似于 JavaScript 对象字⾯量的格式 我们先来看⼀段JSON数据:

{
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": true,
"members": [{
"name": "Molecule Man",
"age": 29,
"secretIdentity": "Dan Jukes",
"powers": ["Radiation resistance", "Turning tiny", "Radiation blast "]
},
{
"name": "Madame Uppercut",
"age": 39,
"secretIdentity": "Jane Wilson",
"powers": ["Million tonne punch", "Damage resistance", "Superhuman reflexes "]
},
{
"name": "Eternal Flame",
"age": 1000000,
"secretIdentity": "Unknown",
"powers": ["Immortality", "Heat Immunity", "Inferno",
"Teleportation", "Interdimensional travel"
]
}
]
}
复制

上述代码也可以压缩表示:

{"squadName":"Super hero squad","homeTown":"Metro City","formed":2016,"secretBase":"Super tower","active":true,"members":[{"name":"Molecule Man","age":29,"secretIdentity":"Dan Jukes","powers":["Radiation resistance","Turning tiny","Radiation blast "]},{"name":"Madame Uppercut","age":39,"secretIdentity":"Jane Wilson","powers":["Million tonne punch","Damage resistance","Superhuman reflexes "]},{"name":"Eternal Flame","age":1000000,"secretIdentity":"Unknown","powers":["Immortality","Heat Immunity","Inferno","Teleportation","Interdimensional travel"]}]}
复制

上⾯描述和第一个的数据⼀样, 只不过第一个数据进⾏了格式化, 更易读。

JSON的语法:
1.数据在键值对(Key/Value)中
2.数据由逗号(,)分割
3.对象⽤大括号({})表示
4.数组⽤([])表示
5.值可以为对象, 也可以为数组, 数组中可以包含多个对象

JSON的两种结构:

  1. 对象: ⼤括号{}保存的对象是⼀个⽆序的键值对集合。 ⼀个对象以左括号{ 开始,}右括号结束。每个"键"后跟⼀个冒号:,键值对使⽤逗号,分隔

    {"name": "Molecule Man","age": 29,"secretIdentity": "Dan Jukes"}
    复制
  2. 数组: 中括号 []保存的数组是值(value)的有序集合。⼀个数组以左中括号[开始,]右括号结束,值之间使⽤逗号分隔。

    ["Million tonne punch", "Damage resistance", "Superhuman reflexes "]
    复制

在这里插入图片描述
所以, 以下都是合法的JSON数据:

{"name":"admin","age":18}
["hello", 3.1415, "json"]
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]
复制

可以使⽤在线JSON格式化⼯具来进⾏校验和书写: 在线JSON校验格式化⼯具(Be JSON)

4.JSON字符串和Java对象互转

JSON本质上是⼀个字符串, 通过⽂本来存储和描述数据。

Spring MVC框架也集成了JSON的转换⼯具, 我们可以直接使⽤, 来完成JSON字符串和Java对象的互转。本质上是jackson-databind提供的功能, Spring MVC框架中已经把该⼯具包引⼊了进来, 咱们直接使⽤即可, 如果脱离Spring MVC使⽤, 需要引⼊相关依赖:

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.5</version>
</dependency>
复制

JSON的转换⼯具包有很多, jackson-databind只是其中的⼀种.

public class JSONUtils {
private static ObjectMapper objectMapper = new ObjectMapper(); 3
public static void main(String[] args) throws JsonProcessingException {
Person person = new Person();
person.setId(5);
person.setName("zhangsan");
person.setPassword("123456");
//对象转为JSON字符串
String jsonStr = objectMapper.writeValueAsString(person);
System.out.println("JSON字符串为:"+jsonStr);
//JSON字符串转为对象
Person p = objectMapper.readValue(jsonStr,Person.class);
System.out.println("转换的对象
id:"+p.getId()+",name:"+p.getName()+",password:"+p.getPassword());
}
}
复制

使⽤ObjectMapper 对象提供的两个⽅法, 可以完成对象和JSON字符串的互转 writeValueAsString: 把对象转为JSON字符串
readValue: 把字符串转为对象

5.JSON优点

  1. 简单易⽤: 语法简单,易于理解和编写,可以快速地进⾏数据交换
  2. 跨平台⽀持: JSON可以被多种编程语⾔解析和⽣成, 可以在不同的平台和语⾔之间进⾏数据交换和传输
  3. 轻量级: 相较于XML格式, JSON数据格式更加轻量级, 传输数据时占⽤带宽较⼩, 可以提⾼数据传输速度
  4. 易于扩展: JSON的数据结构灵活,⽀持嵌套对象和数组等复杂的数据结构,便于扩展和使⽤
  5. 安全性: JSON数据格式是⼀种纯⽂本格式,不包含可执⾏代码, 不会执⾏恶意代码,因此具有较⾼的安全性

基于以上特点, JSON在Web应⽤程序中被⼴泛使⽤, 如前后端数据交互、API接⼝数据传输等

转载请注明出处或者链接地址:https://www.qianduange.cn//article/23971.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
浏览器升级提示:您的浏览器版本较低,建议您立即升级为知了极速浏览器,极速、安全、简约,上网速度更快!立即下载
复制成功!