Spring_前端和后端的JSON数据的流通
前端和后端的JSON数据的流通
前端 to 后端
1.前端的json数据
他们的值有自己的数据类型,例如name
的值是类型,而age
的值是number
类型,但是他们的键一般都是string
类型
可以表示为"name" : "John"
,在vue中,如果写成这样子name: "John"
,也会被隐式转换为字符串—>"name" : "John"
.
1 | const data = { |
2.postman的使用
例如使用postman去发送请求的json数据,一般要求键要加上双引号,不然像wrong
就报错了
3.后端实体类接收
一般新建一个req
的接受实体类。
1 |
|
mvc给我们做了参数类型转换,Params 对象当中的
age
是Integer类型,但是json传字符串,照样可以映射进去。Boolean、BigDecimal、Integer、String、Date
这些其实都可以映射进去的。
4.后端业务类处理对象
- 需要的方法
JSON.parseObject
是将Json字符串转化为相应的对象;
JSON.toJSONString
是将对象转化为Json字符串
- 使用前需要导包
1 | <dependency> |
- 示例:
1 | log.info("查询客户信息请求参数:{}", PersonReq); |
如果
PersonReq
的类中存在空值话,那么JSONObject.parseObject(JSON.toJSONString(PersonReq));
**会跳过空值 **JSONObject.parseObject(JSON.toJSONString(PersonReq))
会根据req
的数据类型转换成对应数据类型1
2
3
4
5//filter是查询条件,
Map<String, Object> filter = JSONObject.parseObject(JSON.toJSONString(PersonReq));
String name = filter.get("age").getClass().getName();
System.out.println("kshgihasigh"+name);
5.搜索框的空值
在查询的时候,往往有些搜索框是空的,我们在写SQL语句的时候往往需要这样写。
1 | <where> |
如果不为空,就要进行查询。如果为空的话,就可以跳过该查询了。但是如果字段的的数据类型是int
,或者long
怎么办。这个东西可没有null,难道要使用0吗。但是万一如果这个需要用到0的查询怎么办,因此我们需要使用包装类。int
—> Integer
和long
->Long
,这样的话,如果搜索框为空的话,那就可以传一个null
了。
1 | <template> |
1 |
|
后端to前端
1.前言
从后端返回给前端Json格式.他们的值一般都成为了String
类型(除了null和布尔值)。无论你的Java
中Resp
返回类的数据类型是什么。
2.Java接收实体类
1 | class CustomerResp { |
3.postman返回结果
4.来自chatGPT的解释
在 JSON 数据中,整数字段通常会被表示为字符串,并用双引号括起来,即使您的 Java 实体类中将整数属性声明为 Integer
类型。这是 JSON 标准的一部分,为了保持数据的一致性和格式化,整数值也会被包装在双引号中。
例如,如果您的 Java 实体类如下:
1 | javaCopy codepublic class ExampleEntity { |
当您在后端返回 JSON 数据时,即使 intValue
是 Integer
类型,返回的 JSON 数据中的整数值也会被表示为字符串,如下所示:
1 | jsonCopy code{ |
在上面的 JSON 中,intValue
的值是字符串 “42”,而不是整数 42,因为 JSON 数据中的数字通常会以字符串形式表示。
前端在解析 JSON 数据时通常会根据需要将字符串形式的整数值转换为整数类型,这通常是自动处理的。 JSON 解析库(如 JavaScript 中的 JSON.parse()
)会负责将字符串转换为适当的数据类型。所以,虽然数据在 JSON 中以字符串形式表示,前端代码可以方便地将其转换为整数类型。
1 | const jsonString = '{"floatValue": "3.14"}'; |
总结
在Java后端,无论是req
和resp
的类中的数据类型,都可以按照数据库定义的数据类型来。前端有相应的处理方法,不需要为了方便全部定义为string
类型的.
不过有时,前端获得的Data已经是一个对象了,没办法进行const data = JSON.parse(jsonString);
操作了,因此我建议使用注解的形式,直接在服务器端的试试就直接转化为对应的Long型数据
1 |
|