网站的登陆页怎么做图片,自助建站设计工作主要包括,绿色在线网站,开发app需要哪些软件目录 第一章、快速了解JSON1.1#xff09;JSON是什么1.2#xff09;json的语法格式①键值对、字符串、数字、布尔值、数组、对象②嵌套的格式 1.3#xff09;为什么使用JSON 第二章、发送和接收JSON格式数据2.1#xff09;postman发送JSON格式数据2.2#xff09;Java后端接… 目录 第一章、快速了解JSON1.1JSON是什么1.2json的语法格式①键值对、字符串、数字、布尔值、数组、对象②嵌套的格式 1.3为什么使用JSON 第二章、发送和接收JSON格式数据2.1postman发送JSON格式数据2.2Java后端接收数据2.2.1后端不写任何注解情况下接收参数 情况A:后端不写注解postman发出get请求情况B:后端不写注解postman发出post请求2.2.2后端写RequestParam注解接收参数 情况A:postman发出post请求情况B:postman发出get请求2.2.3后端写RequestBody注解接收参数 情况A:postman发出post请求情况B:postman发出get请求RequestParam和RequestBody总结 第三章、JSON与其他格式数据的互相转换3.1其他格式数据转为JSON格式数据3.6JSON格式数据转为其他格式数据 友情提醒: 先看文章目录大致了解文章知识点结构点击文章目录可直接跳转到文章指定位置。 第一章、快速了解JSON
1.1JSON是什么
①JSON简单介绍 一种轻量级的数据交换格式采用键值对的方式表示数据。常用于 Web 应用程序中的数据传输。 PSJSON格式可以使用一些转义字符。
②json格式 在这六个构造字符的前或后允许存在无意义的空白符
[ 左方括号
{ 左大括号
] 右方括号
} 右大括号
: 冒号
, 逗号③JSON的键和值 1、JSON 的键是一个 String 类型的字符串。字符串必须使用双引号 2、值value值可以是对象、数组、数字、字符串、布尔值或null。JSON支持复杂的数据结构可以嵌套对象和数组。
1.2json的语法格式
①键值对、字符串、数字、布尔值、数组、对象
{name:John} //键值对
Hello, World! //字符串
123或3.14 //数字整数或浮点数
true或false //布尔值
[1, 2, 3, 4, 5] //数组结构
{name: John,age: 30,city: New York} //对象结构
②嵌套的格式
1、对象中有对象
{
name: John,age: 30,
address: {street: 123 Main St,city: New York}
}传输测试
2、多个对象在数组中
[
{name: John,age: 30},
{name: Jane,age: 25}
]传输测试 3、对象中包含数组结构和对象属性
{id:1,name:张三,age:18,job:{jobName:Java开发,company:某知名大厂},nickName:[张三,法外狂徒,传奇人物]
}传输测试
1.3为什么使用JSON
①为什么使用 JSON具有简洁性可读性跨语言支持数据结构灵活数据传输效率高的特点。
②使用场景 ①前后端数据交互将服务器端的数据以 JSON 格式发送给前端前端再使用 JavaScript 解析JSON数据后再展示和处理。 ②API接口设计使用 JSON 作为数据交换格式。通过将数据以 JSON 格式发送到 API 接口可以实现数据的传输和交互。 ③数据存储将数据序列化为 JSON 格式后存储在文件或数据库中并在需要时重新解析为对象。 ④日志记录将复杂的结构化数据以 JSON 格式记录下来。 ⑤配置文件JSON可以用于表示配置文件例如Web应用程序的配置信息。
第二章、发送和接收JSON格式数据
2.1postman发送JSON格式数据
比较简单直接查看这个文章就好了 postman的下载安装和使用
2.2Java后端接收数据
注意后端接收参数大概四种情况 ①不写任何注解 ②写RequestParam注解多个RequestParam注解 ③写RequestBody ④写RequestParam注解同时又写RequestBody
2.2.1后端不写任何注解情况下接收参数
情况A:后端不写注解postman发出get请求
①后端参数类型为Integer发送参数String “1”结论接收成功 ②后端参数类型为String发送参数为String “1”结论接收成功 ③后端参数类型为一个Integer一个String。发送参数方式为form-data 为key(pid) value(1)key(eid) value(“1”)结论接收成功
④后端参数类型为一个Integer一个String发送参数方式为JSON{“eid”:“1”,“pid”:1} 结论接受到的俩个值为NULL值 postman页面
⑤后端参数类型为一个数组接收多个同名参数结论接收成功 postman页面 ⑥后端参数类型为map接收多个不同名参数结论失败 postmanye页面
⑦后端参数类型为一个实体类发送参数方式为JSON{“eid”:“1”,“pid”:1} 结论对象参数的属性值为null postman页面
情况B:后端不写注解postman发出post请求
①后端参数类型为Integer发送参数为String “1”结论接收成功
②后端参数类型为String发送参数为String “1”结论接收成功
③后端参数类型为一个Integer一个String。发送参数方式为form-data 为key(pid) value(1)key(eid) value(“1”)结论接收成功
④后端参数类型为一个Integer一个String发送参数方式为JSON{“eid”:“1”,“pid”:1} 结论失败两个值为NULL值
⑤后端参数类型为一个数组接收多个同名参数结论接收成功
⑥后端参数类型为map接收多个不同名参数结论失败
⑦后端参数类型为一个实体类发送参数方式为JSON{“eid”:“1”,“pid”:1} 结论失败对象参数的属性值为null
2.2.2后端写RequestParam注解接收参数
情况A:postman发出post请求
①后端参数类型为Integer发送参数为String “1”结论接收成功
②后端参数类型为String发送参数为String “1”结论接收成功
③后端参数类型为一个Integer一个String。发送参数方式为form-data 为key(pid) value(1)key(eid) value(“1”)结论接收成功
④后端参数类型为一个Integer一个String发送参数方式为JSON{“eid”:“1”,“pid”:1} 结论失败bad request
⑤后端参数类型为一个数组接收多个同名参数结论接收成功 注意不同名的不会存入 请求 如果传递的三个参数有两个与数组参数同名会存入数组不同名的则不会被存入数组 传参两个与数组参数同名一个不同名 ⑥使用Map去接收请求参数接收成功
postman请求
⑦后端参数类型为一个实体类发送参数方式为JSON{“eid”:“1”,“pid”:1} 结论失败Bad Request RequestParam不能注解实体类参数 postman页面
情况B:postman发出get请求
①后端参数类型为Integer发送参数为String “1”结论接收成功
②后端参数类型为String发送参数为String “1”结论接收成功
③后端参数类型为一个Integer一个String。发送参数方式为form-data 为key(pid) value(1)key(eid) value(“1”)结论接收成功
④后端参数类型为一个Integer一个String发送参数方式为JSON{“eid”:“1”,“pid”:1} 结论失败bad request
⑤后端参数类型为一个数组接收多个同名参数结论接收成功 不同名的不会存入
⑥后端参数类型为map接收多个不同名参数结论成功
⑦后端参数类型为一个实体类发送参数方式为JSON{“eid”:“1”,“pid”:1} 结论失败Bad Request RequestParam不能注解实体类参数
2.2.3后端写RequestBody注解接收参数
RequestBody只能接收JSON字符串
情况A:postman发出post请求
①后端参数是Integer传参数是数字 1 结论成功。 json的value为 后端对应属性是String类型的那么接受到的就是 如果后端属性的类型是Integer、Double等那么接收到的就是null。 json的value为null后端对应收到的就是null。 ②后端参数是String传参数是字符串 1结论成功 ③后端参数是Integer传参数是json {“eid”:1}结论失败 bad request ④后端参数是一个简单对象发送参数方式为JSON{“eid”:“1”,“pid”:1} 会根据json字符串中的key来匹配对应实体类的属性如果匹配一致且key对应的值符合实体类对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。 postman页面 ⑥RequestBody与RequestParam()同时使用 Controller postman页面
情况B:postman发出get请求
RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)而最常用的使用请求体传参的无疑是POST请求了所以使用RequestBody接收数据时一般都用POST方式进行提交。
RequestParam和RequestBody总结
①RequestParam用来绑定查询参数(也就是在URL上的参数)和from data(也就是请求体对应postman中的 from-data)。发起请求时在URL上和使用from data传参都可以使用 RequestParam来接收。
②RequestParam将接收到的字符串自动转化为对应的类型
③RequestParam不支持直接传递实体类的方式可接收Map和数组可接收单个参数。
④RequestParam注解的属性 1、如果参数前写了RequestParam(xxx)那么前端发送的请求路径中必须有对应的xxx参数才行 2、value请求中传入参数的名称如果不设置后台接口的value值则会默认为该变量名。 3、name:作用同value相同 4、required表示请求中一定要传入对应的参数如果设置为false时当请求中没有此参数将会默认为null 5、defaultValue参数的默认值如果请求中没有同名的参数时该变量默认为此值。注意默认值可以使用SpEL表达式如#{systemProperties[‘java.vm.version’]}
RequestParam(value 参数名,required false,defaultValue 12)⑤一个请求中RequestBody最多只能有一个而RequestParam()可以有多个。它们可以同时使用。
⑥RequestParam指定接收的参数可以是普通元素、数组、集合、对象等等RequestBody接收的是请求体里面的数据
⑦如果参数是放在请求体中以application/json的格式传入后台接口那么后台要RequestBody才能接收到如果不是放在请求体中的话要用RequestParam来接收或者在形参前不贴RequestParam注解也能接收。
⑧feign或者openfeign远程调用服务时如果参数前什么也不写那么会被默认是RequestBody。
第三章、JSON与其他格式数据的互相转换
3.1其他格式数据转为JSON格式数据
将不同的数据格式与JSON格式进行转换需要依赖第三方包
JSON //json官方提供的
FastJson //阿里巴巴提供
Jackson //springboot启动包自带
GSON //Google提供的第三方包有很多选择一种就好了这里选择Jackson介绍
jackSon解析JSONSpringMVC内置的解析器就是这个 springboot启动包也有jackson
maven依赖:
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.8/version
/dependency①对象类型转json比如我有一个loanInfo对象 // 创建ObjectMapper对象ObjectMapper objectMapper new ObjectMapper();String jsonString;try {// 将对象转换为JSON字符串jsonString objectMapper.writeValueAsString(loanInfo);} catch (JsonProcessingException e) {e.printStackTrace();}return jsonString;生成json字符串
ArrayListStudent students new ArrayList();
for (int i 0; i 3; i) {students.add(new Student(100 i, 二稿 i, 1000 i));
}
Grade grade new Grade(22, 语文, students);
ObjectMapper objectMapper new ObjectMapper();
String s objectMapper.writeValueAsString(grade);
System.out.println(s);
解析JSON字符串
// 对象嵌套数组嵌套对象
String json1 {\id\:1,\name\:\JAVAEE-1703\,\stus\:[{\id\:101,\name\:\刘一\,\age\:16}]};
// 数组
String json2 [\北京\,\天津\,\杭州\];ObjectMapper mapper new ObjectMapper();
Grade grade mapper.readValue(json1, Grade.class);
System.out.println(grade);ListString list mapper.readValue(json2, newTypeReferenceListString() {});
System.out.println(list)
3.6JSON格式数据转为其他格式数据