JSON学习笔记
♥课程链接:【狂神说Java】一小时掌握JSON_哔哩哔哩_bilibili
配套的当然还要学习ajax
不管是前端后端,感觉这部分内容是必须的,不然真的做项目的时候云里雾里。
总体json的内容不多,具体就:
1. 列表、对象等语法格式
2. json和js对象的相互转换:
JSON.parse() : JSON → js对象
JSON.stringify(): js对象→JSON
3. 在contoller层结合一些工具使用
一、Json
1.1 什么是Json
JSON (JavaScript Object Notation, JS对象标记) 是一种轻量级的数据交换格式。
采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
作用:JSON:前后端分离中,数据交互的王者!
1.2 语法格式
对象表示为键值对
数据由逗号分隔(最后一个数据后边没有逗号)
花括号保存对象
方括号保存数组
JSON键值对是用来保存JS对象的一种方式,和JS对象的写法大同小异,用双引号""包裹键名,用冒号: 分割键与值,如下所示
{"name": "Boat"}
{"age": "18"}
{"sex": "女"}
1.3 JSON与JS对象
JSON与JS对象的关系:JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串
var obj = {a: 'Hello', b: 'world'}; // 这是一个对象,注意键名也可以用引号包裹
var json = {"a": "Hello", "b": "world"}; // 这是一个JSON字符串,本质是一个字符串
JSON和JS对象互换:
要实现JSON字符串转换为JS对象,使用JSON.parse()方法
var obj = JSON.parse({"a":"Hello", "b":"world"}); //结果是{a: 'Hello', b: 'world'}
要实现JS对象转换为JSON字符串,使用JSON.stringify()方法
var json = JSON.stringify({a: 'Hello', b: 'world'}); //结果是{"a":"Hello", "b":"world"}
可以通过console.log(obj) 和console.log(json) 在前端看一下区别:
![](https://img-blog.csdnimg.cn/img_convert/38be75c8e56846058d1ec8b6d8b40d76.png)
所以只要后端 返回这样的字符串,通过JSON.parse()方法 就可以变成一个对象
1.4 结合后端食用
1.4.1 jackson 和 @ResponseBody注解
在controller层,写相应的处理方法,处理其返回值的时候,需要考虑一下,如果正常返回,它会走视图解析器,而json需要返回的是一个字符串,市面上很多第三方jar包可以实现这个功能,例如jackson。
需要先在pom中加入jackson的依赖
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.13.3</version>
</dependency>
在controller里的方法前加入注解 @ResponseBody,就可以实现了
@ResponseBody 和 @RequestBody 的区别:
@ResponseBody: 可以将服务器端返回的对象,转换为json对象响应回去(表示该方法的返回的结果直接写入 HTTP 响应正文中,一般在异步获取数据时使用;)
在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。例如,异步获取json数据,加上@Responsebody注解后,就会直接返回json数据。
@RequestBody :一般用来负责接收前台的json数据,把json数据自动封装到pojo中,在Ajax里尝试(将 HTTP 求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象。)
-----------------
参考:详述 @ResponseBody 和 @RequestBody 注解的区别_CG国斌的博客-CSDN博客_**@requestbody和@responsebody的区别?**
1.4.2 基本controller操作,将返回的对象转为json
controller中的代码实现如下:
@RequestMapper("/json1")
@ResponseBody //该注解可以将服务器端返回的对象,转换成json相应过去
public String json1(){// 需要一个jackson的对象映射器,就是一个类,使用它可以直接将对象转换为json字符串ObjectMapper mapper = new ObjectMapper(); //来自jackson// 创建一个对象User user = new User(name: "小船", age: 18, sex:"女");//将Java对象转换为json对象String str = mapper.writeValueAsString(user);return str; //由于使用了@ResponseBody注解,这里会将str 以json格式的字符串返回,十分方便
}
可以成功运行出来,但是汉字会乱码,
![](https://img-blog.csdnimg.cn/img_convert/c0ad6ea965424f2ba5c15f5effd8eef4.png)
1.4.3 乱码处理
解决办法:给@RequestMapping加一个produces属性,设置编码格式为UTF-8,以及它的返回值类型,顺带精简一下代码:
@RequestMapper("/json1", produces = "application/json;charset=utf-8") //produces:指定相应体返回类型和编码
@ResponseBody
public String json1(){User user = new User(name: "小船", age: 18, sex:"女");return new ObjectMapper().writeValueAsString(user);}
一劳永逸的办法:在spring中进行配置,但是因为不同时候用的框架也不一样,所以这里就先不写了,放上狂神课里,用springmvc时候的解决办法
![](https://img-blog.csdnimg.cn/img_convert/2f9377fc4afb48a0a1c476d70619ae0d.png)
1.4.4 升级版controller中的代码(用list传递多个对象)
升级版controller中的代码(用list传递多个对象):
@RequestMapper("/json3")
@ResponseBody //该注解可以将服务器端返回的对象,转换成json相应过去
public String json3(){List<User> list = new ArrayList<>();User user1 = new User(name: "小船1", age: 18, sex:"女");User user2 = new User(name: "小船2", age: 18, sex:"女");User user3 = new User(name: "小船3", age: 18, sex:"女");User user4 = new User(name: "小船4", age: 18, sex:"女");list.add(user1);list.add(user2);list.add(user3);list.add(user4);return new ObjectMapper().writeValueAsString(list); //直接传递list就行
}
返回的结果就是:
[{"name": "小船1", "age": 18, "sex":"女"},{"name": "小船2", "age": 18, "sex":"女"},{"name": "小船3"," age": 18, "sex":"女"},{"name": "小船4", "age": 18, "sex":"女"}]
可以看出,json的列表是[],不同对象用{}, 不同对象间用逗号分开,最后一个不能加逗号
1.4.5 json格式化工具
json格式化工具:JSON 在线解析 | 菜鸟工具 (runoob.com)
![](https://img-blog.csdnimg.cn/img_convert/57400dd752c24802a1e04d5702fe1d2c.png)
![](https://img-blog.csdnimg.cn/img_convert/bf7efa191a394581b4711da1426ec1cd.png)
1.4.6 传递时间
传递时间,需要import 一下 Data, 注意是import java.util.Date
Cotroller层代码如下:
@RequestMapper("/json5")
@ResponseBody
public String json5(){// 传递data的时候,还是需要考虑格式问题的,不然传给json就是个时间戳ObjectMapper mapper = new ObjectMapper(); // 1. 关闭时间戳mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, state:false);// 2. 时间格式化,自定时间格式对象:SimpleDateFormat sdf = new SimpleDateFormat(pattern:"yyyy-MM-dd HH:mm:ss");// 3. 让mapper指定时间日期格式为simleDateFormatmapper.setDateFormat(sdf);// 写一个日期对象Date date = new Date();return new ObjectMapper().writeValueAsString(date);}
可以把格式化时间的代码,封装成一个工具类,也可以用不同框架的时候,全局配置时间,这儿的,我也就只放狂神课堂的截图了。
![](https://img-blog.csdnimg.cn/img_convert/11b4ba84b9764bcb8e2972118d072bce.png)
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/11b4ba84b9764bcb8e2972118d072bce.png)
JSON学习笔记
♥课程链接:【狂神说Java】一小时掌握JSON_哔哩哔哩_bilibili配套的当然还要学习ajax不管是前端后端,感觉这部分内容是必须的,不然真的做项目的时候云里雾里。总体json的内容不多,具体就:1. 列表、对象等语法格式2. js…...
![](https://img-blog.csdnimg.cn/c862b4849ff64bb5bc1db1a3e0ce9417.png)
家政服务小程序实战教程07-轮播图组件
小程序中首页一般显示轮播图的功能,点击轮播图会跳转到具体的一篇文章或者是产品,本篇我们就介绍一下轮播图功能的开发 01 设计数据源 我们轮播图组件需要两个字段,一个是展示的图片,一个是跳转页面传入的参数。打开数据源&…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL之索引创建、删除、唯一索引、普通索引、及命名规则、注意事项
一、MySQL 索引 定义 索引是一个数据结构,用于加速数据库表中数据的查询。索引存储了一些数据表中的列值,以及这些列值在数据表中的位置,这样就可以通过索引来快速查找到数据表中的某一行数据。 MySQL 支持多种索引类型,包括普通…...
![](https://img-blog.csdnimg.cn/87dbd03958ad4675aab704226ff1ceee.png)
【C++设计模式】学习笔记(3):策略模式 Strategy
目录 简介动机(Motivation)模式定义结构(Structure)要点总结笔记结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金…...
![](https://img-blog.csdnimg.cn/6fc0f340e4bd4d6aa3065908badd1ce7.png)
Java——聊聊JUC中的ThreadLocal
文章目录: 1.什么是ThreadLocal? 1.1 api介绍 1.2 最简单的案例认识ThreadLocal 1.3 线程池结合ThreadLocal案例 2.Thread &ThreadLocal & ThreadLocalMap 3.ThreadLocal内存泄漏问题 3.1 四大引用之强引用 3.2 四大引用之软引用 3.3 四…...
![](https://img-blog.csdnimg.cn/284c30f7a5c94d0a85210a17215506ea.jpeg)
软件工程(4)--螺旋模型
前言 这是基于我所学习的软件工程课程总结的第四篇文章。 在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。构建原型是一种能使某些类型的风险降至最低的方法。为了降低交付给用户的产品不能满足用户需要的风险,一种行…...
![](https://img-blog.csdnimg.cn/img_convert/0f264d2446bbb5f6eed30945dbf94d39.png)
图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符
一、题目 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 二、示例 2.1> 示例 1: 【输入】s "abaccdeff" 【输出】b 2.2> 示例 2: 【输入】s "" 【输出】 限制: 0 < s 的…...
![](https://www.ngui.cc/images/no-images.jpg)
《HTML 5与CSS 3核心技法》读书笔记
目录前言第1章 写在前面第2章 HTML 语法基础第3章 布局类元素 ,房子的楼板、柱子和大梁第4章 功能类元素,房子的门、窗、水管和电气第5章 CSS基础第6章 选择器,确定样式的作用范围选择器类型选择器的组合使用第7章 权重,样式发送冲…...
![](https://img-blog.csdnimg.cn/img_convert/e097a33616c6ff2fd8e4c7a3569c1ffe.png)
【沐风老师】3DMAX几何投影插件Geometry Projection使用详解
【几何投影插件】 描述 3DMAX几何投影插件Geometry Projection,将一个或多个对象或它的顶点选择沿全局或局部 x、y 或 z 轴投影到另一个对象上。 适用版本 3dMax2013或更高版本 安装设置 插件的安装非常简单,解压后把插件脚本 “geometry_projectio…...
![](https://www.ngui.cc/images/no-images.jpg)
面试问题整理
20200422面试题 1、有nginx为什么还要用gateway 2、factorybean和beanfactory有什么区别 https://www.cnblogs.com/leeego-123/p/12159574.html 2、aop原理 3、ioc原理 4、注解requestbody和responsebody区别。pathvireable和requestparam注解区别,feign客户端的注解…...
![](https://www.ngui.cc/images/no-images.jpg)
“区块链60人”2022赋能中国区块链创新人物名单公布
2022年11月5日,“2022第五届全国高校人工智能大数据区块链教育教学创新论坛”在京隆重召开。此次论坛公布了“区块链60人”2022赋能中国区块链创新人物评选活动获评名单。 本次评选活动通过媒体报道、第三方推荐、专家评选等环节,坚持“公开、公平、公正…...
![](https://www.ngui.cc/images/no-images.jpg)
day2324 数组
文章目录相关概念codeArrayTest08 数组拷贝相关概念 day23课堂笔记 1、数组 1.1、数组的优点和缺点,并且要理解为什么。 第一:空间存储上,内存地址是连续的。 第二:每个元素占用的空间大小相同。 第三:知道首元素的内…...
![](https://img-blog.csdnimg.cn/img_convert/4a86bf119ff8ba2f9a0a6a6c30d40cf0.png)
【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)
前言 越努力越幸运 哈喽~我是栗子同学! 特别注意:不管是沉迷赌球,还是沉迷购彩,都是不可取的。本文纯是一个技术学习内容。 听说关注我的人会暴富哦!、 所有文章完整的素材源码都在👇👇 粉丝…...
![](https://img-blog.csdnimg.cn/40c05fe5450a464c82cefe2c11ff4730.jpeg#pic_center)
2023年上半年软考高项信息系统项目管理师2月25日开班
信息系统项目管理师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资…...
![](https://img-blog.csdnimg.cn/4633da07c0834f03ac6c94f5842eaba3.png)
数据库(第一天)
文档信息 文档类别正式文档文档编号数据库基础课 1.2-001版本1.2-001文档名称数据库基础课编写负责人/编写时间梁昭东/2023 年 1 月 30 日审核负责人/审核时间年 月 日批准人/批准时间年 月 日 变更记录 日期版本号变更内容修订者2023.01.30v1.2版根据实际情况增删了部分内容…...
![](https://img-blog.csdnimg.cn/c0d7bbfb20c4442685c042978a289448.jpeg#pic_center)
一文了解 ArrayList 的扩容机制
了解 ArrayList 在 Java 中常用集合类之间的关系如下图所示: 从图中可以看出 ArrayList 是实现了 List 接口,并是一个可扩容数组(动态数组),它的内部是基于数组实现的。它的源码定义如下: public class A…...
![](https://www.ngui.cc/images/no-images.jpg)
牛态已成选股源码
{牛态已成} {条件选股} {其他类型} N:7; A1:(REF(H,N) HHV(H,((2 * N) 1))); B1:FILTER(A1,N); C1:BACKSET(B1,(N 1)); D1:FILTER(C1,N); A2:(REF(L,N) LLV(L,((2 * N) 1))); B2:FILTER(A2,N); C2:BACKSET(B2,(N 1)); D2:FILTER(C2,N); E1:((REF(LLV(L,(2 * N)),1) REF(…...
![](https://img-blog.csdnimg.cn/img_convert/9ca0b61fe518402de52525727e6e4570.png)
Python基础
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。小编也整理了一套关于学习Python入门…...
![](https://img-blog.csdnimg.cn/0aa6c21bd35c4921b8e0803c7b667d09.png#pic_center)
浅显易懂的说清楚小游戏与H5游戏的技术区别
从“跳一跳”到“羊了个羊”微信小游戏上线4年时间,除了涌现出不少火爆全网的小游戏之外,也有类似于“动物餐厅”、“口袋奇兵”等游戏得以在此孵化繁荣,凭借着微信强大的社交属性小游戏成为游戏厂商在桌面端、App 端、H5 端之外争夺的另一个…...
![](https://img-blog.csdnimg.cn/cce6dd02326042e08db911003d7ceae5.png)
【Python入门第七天】Python 数字
Python 数字 Python 中有三种数字类型: intfloatcomplex 为变量赋值时,将创建数值类型的变量: 实例 x 10 # int y 6.3 # float z 2j # complex如需验证 Python 中任何对象的类型,请使用 type() 函数: 实…...
![](https://www.ngui.cc/images/no-images.jpg)
Python自动化测试 软件测试最全教程(附笔记),看完可就业
最近看到很多粉丝在后台私信我,叫我做一期Python自动化测试的教程,其实关于这个问题,我也早就在着手准备了,我录制了一整套完整的Python自动化测试的教程,都上传在B站上面,大家有兴趣的可以去看一下&#x…...
![](https://img-blog.csdnimg.cn/528c2f510cd34bc2b8d9ccd366f91ef7.png)
Windows 安装Tomcat
版本:tomcat8.5jdk-8u231一.解压JDK安装包 更换JDK安装路径二.解压安装Tomcat 选择jdk安装路径更换tomcat安装路径三.设置环境变量 1.“环境变量”界面中系统变量点击”新建“,创建CATALINA_HOMEC:\RESSET\tomcat(Tomcat服务器的根目录)2.创建…...
![](https://img-blog.csdnimg.cn/img_convert/11fec902fa144657bfd0d2667b662459.jpeg)
知识图谱业务落地技术推荐之图数据库汇总
0.图数据库排名 链接:https://db-engines.com/en/ranking/graph+dbms 0.1简要分析(各种图数据库属性) Neo4j(主流) 历史悠久且...
![](https://www.ngui.cc/images/no-images.jpg)
2023新华为OD机试题 - 最小传递延迟(JavaScript) | 刷完必过
最小传递延迟 题目 通讯网络中有N个网络节点 用1 ~ N进行标识 网络通过一个有向无环图进行表示 其中图的边的值,表示节点之间的消息传递延迟 现给定相连节点之间的延时列表times[i]={u,v,w} 其中u表示源节点,v表示目的节点,w表示u和v之间的消息传递延时 请计算给定源节点到…...
![](https://img-blog.csdnimg.cn/ba25e74bc26a468390fb7af42318eac2.png)
SpringMVC基础入门(一)之理论基础概念
文章目录SpringMVC1.概念2.常用注解请求与响应1.请求参数2.JSON传输3.常用注解响应1.响应页面2.响应JSON数据Rest风格1.介绍2.常用注解SpringMVC 1.概念 (1)定义 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架。 (2)为什…...
![](https://www.ngui.cc/images/no-images.jpg)
前端知识点
一. slice和splice区别: 1.splice改变原数组,slice不改变原数组。 2.splice除了可以删除之外,还可以插入。 3.splice可传入3个参数,slice接受2个参数。slice(start,end):方法可从已有数组中返回选定的元素,…...
![](https://img-blog.csdnimg.cn/eacc86bc028642afb4e6cae5f240138c.png)
【docker知识】从容器中如何访问到宿主机
一、说明 使用 Docker 能实现服务的容器化,并使用容器间网络在它们之间进行通信。有时您可能需要一个容器来与宿主机上非容器化的服务通信。以下是如何从 Docker 容器中访问本地主机或 127.0.0.1的具体方法。 二、方法1:简单的选择 适用于 Windows 和 Ma…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL入门篇-MySQL常用流程控制函数小结
备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊常见的流程控制函数 如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本 流程控制函数 函数名函数用途CASEcase语句用于条件判断if()if/else条件判断ifnull()null数据处理nullif()retur…...
![](https://img-blog.csdnimg.cn/img_convert/d60bc92f70d914b59a1d041e185c19b9.png)
大数据技术架构(组件)35——Spark:Spark Streaming(1)
2.3、Spark Streaming2.3.0、OverviewSpark Streaming 是核心 Spark API 的扩展,它支持实时数据流的可扩展、高吞吐量、容错流处理。数据可以从许多来源(如 Kafka、Kinesis 或 TCP 套接字)获取,并且可以使用复杂的算法进行处理&am…...
![](https://www.ngui.cc/images/no-images.jpg)
实现超大文件上传逻辑
引言 文件上传功能是我们开发中经常会遇到的功能点,当日常开发中遇到小文件(比如:头像),可以直接将文件转为字节流直接上传到服务器上即可。但是当遇到大文件这种(比如:一部电影至少1个G)该怎么…...
![](https://img-blog.csdnimg.cn/img_convert/3f283286c691d954349ccd3a4595721f.png)
建立网站 域名 服务器吗/全球搜索大全
据相关数据统计,中国中小学生,每天课外写作业的时间长达2.82小时!是日本学生的3.7倍、韩国学生的4.8倍。尽管如此,80%的孩子在学习过程中,还都伴有歪歪斜斜、埋头苦干等不正确的姿势。那么,不正确的坐姿对孩…...
![](/images/no-images.jpg)
赣州网站建设流程/技成培训网
日志记录是检测和调查应用程序中问题的基本功能。 日志记录框架使将事件数据记录到预配置的日志目标变得很容易。 但是,如果您的日志文件包含非结构化数据,则查询数据成为噩梦。 这是结构化日志起作用的地方。 通过确保要记录的数据以结构化格式编写&am…...
![](https://img2018.cnblogs.com/blog/1439869/201907/1439869-20190702031642354-331207279.jpg)
医院做网站的意义/网站案例分析
javaGC回收机制 在面试java后端开发的时候一般都会问到java的自动回收机制(GC)。在了解java的GC回收机制之前,我们得先了解下Java虚拟机的内存区域。 java虚拟机运行时数据区 java虚拟机在执行的过程中会将其管理的内存划分为不用的数据区域&…...
![](/images/no-images.jpg)
美妆网站怎么做/网络销售新手入门
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理以下文章来源于腾讯云 作者:keinYe( 想要学习Python?Python学习交流群:1039649593,满足你的需求,…...
![](https://img-blog.csdnimg.cn/img_convert/9e73f32474aa1c02e84c9676b5614f40.png)
重庆建设工程交易中心/许昌seo公司
前面介绍了一些Go语言的基础,但要想对Go语言有深入的理解,还要学习加事件才行。本号给大家推荐几本必读教程。Go语言是最近几年流行起来的语言,该语言有谷歌发明,并得到广泛的应用。Go语言最大的特点是并发支持度好,而…...
体育网站怎样做香功/谷歌推广怎么样
本文与大家分享一些Python编程语言的入门书籍,其中不乏经典。我在这里分享的,大部分是这些书的英文版,如果有中文版的我也加上了。有关书籍的介绍,大部分截取自是官方介绍。Python基础教程(Begining Python)…...