前后端角度看接口(什么是json)?

2024-06-15 07:32
文章标签 接口 json 角度看

本文主要是介绍前后端角度看接口(什么是json)?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 什么是JSON?
    • 为什么需要JSON?
    • 总结

什么是JSON?

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

json前两个字就是js,说明其与js必然存在一些联系,其实json可以理解为盛装js数据的一个容器(不是只能装js的,不要扣这些),说白了,就是储存数据的一个小玩意儿。其实如果你身边有搞前端的同学,不难发现,他们会经常说接口、报文,对于一个后端小白的我来说,也很想明白这究竟是个什么东东,最近工作一直做前后端开发,所以跟json结下了缘。

前端中json大致是形如这个样子的,就是冒号左边一个名字(键),右边是具体的值(值),其实就是键值对。。是不是很简单,如果不简单也不会这么火了↓↓↓

var json = {"xxx":"xxx"};

右边可以是一个数字,可以是一个对象,可以是字符串,可以是一个数组,可以是一个json(套娃),我给大家举个例子大家就明白了,既然是容器,必然要有大的,有小的,啥都能装

装数字:

var feeInfoList = {"num":11};

通过feeInfoList.num就可以拿到num对应的值:11,很简单吧?
装字符串:

var feeInfoList = {"name":"小斌哥"};

通过feeInfoList.name,就能拿到带双引号的"小斌哥"啦~
装对象:

var 小斌哥= {"name":"小斌哥", "age":21, "sex":"爷们"};

小斌哥这个对象里面包含姓名、年龄和性别,多个数据可以通过逗号隔开,因此,小斌哥这个对象就生成了!!
装数组

var array = {"array":[{"name":"小斌哥","sex":"爷们","age":21},{"name":"貂蝉","sex":"美女","age":18}
]};

直接看可能比较懵,但是仔细看,键是"array",值就是后面的一大坨,对吗?那一大坨拆开看,是不是就是一个个的对象,对象之间用逗号隔开了,对象里面有姓名、性别和年龄,每一个属性都是用键值对装的,并且用逗号隔开,是不是很容易呢,其实如果别人给你一大堆报文,可以用utools(一个软件),直接复制进去,就可以清楚的看到json格式了,很方便~
装json:

var json = {"json":{"json":{"json":11}}
}

哈哈,所谓套娃,就是可以在值那里一直用json,所以想拿到11,就需要通过:json.json.json.json,就能取到11了,不过这只是一个演示,除非真的有这样的需求,要不然还是不要这么玩儿,他毕竟只是一个容器,以盛装数据并且简洁易懂为主~

为什么需要JSON?

等到去了公司做前后端分离的项目的时候,大家会发现前端与后端交互大部分都是接口(其实就是用json装的一些数据),举个栗子,用户在浏览器输入了用户名和密码要登录,这个输入的用户名和密码肯定会发到后台,后台进行一系列的处理并且给前台反馈结果,画个图就是这样的:
在这里插入图片描述
总之前后端交互就是通过json报文,可以联想一下最开始学javaWeb的时候我们是怎么进行前后端交互的:

	String name = request.getParameter("name");String pwd = request.getParameter("pwd");

在这里插入图片描述
有没有引起你的某种回忆,哈哈~
为什么不建议用servlet进行接收前端的数据呢?一个是负载压力大,后端成了爹了,啥都要管,权重非常高,你每次接收前台的数据都需要初始化加载servlet各种乱七八糟的东西,之后才能进行处理;第二是耦合太高,等你花了半天劲写完了代码,需求发生变更,你要改controller层、dao层、service层,该改的不该改的你都得改,体验过的童鞋麻烦点个赞。。

总结

大家可以看到,通过json,非常方便快捷地把一些复杂的对象和数据进行发送。每个公司肯定都对前端的ajax进行了封装,所以不需要每次都

 $(document).ready(function(){  var saveDataAry=[];  var data1={"userName":"zhangsan","address":"bj"};  var data2={"userName":"lisi","address":"nj"};  saveDataAry.push(data1);  saveDataAry.push(data2);         $.ajax({ type:"POST", url:"userInfo/userUpd", dataType:"json",      contentType:"application/json",               data:JSON.stringify(saveData), success:function(data){ ...	...} }); });  

使用起来也非常的方便~
另外阿里巴巴有一个fastjson,可以非常快速地把json序列化和反序列化:

String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化

大家可以试一下~
如果小伙伴们还有什么疑问欢迎留言~

这篇关于前后端角度看接口(什么是json)?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062812

相关文章

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

python中json.dumps和json.dump区别

《python中json.dumps和json.dump区别》json.dumps将Python对象序列化为JSON字符串,json.dump直接将Python对象序列化写入文件,本文就来介绍一下两个... 目录1、json.dumps和json.dump的区别2、使用 json.dumps() 然后写入文

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

struts2中的json返回指定的多个参数

要返回指定的多个参数,就必须在struts.xml中的配置如下: <action name="goodsType_*" class="goodsTypeAction" method="{1}"> <!-- 查询商品类别信息==分页 --> <result type="json" name="goodsType_findPgae"> <!--在这一行进行指定,其中lis是一个List集合,但

股票数据接口-陈科肇

陈科肇 新浪财经 sz-深圳sh-上海历史分价表:http://market.finance.sina.com.cn/pricehis.php?symbol=sz000506&startdate=2016-12-27&enddate=2016-12-27历史成交明细(当日成交明细):http://vip.stock.finance.sina.com.cn/quotes_service/v