JSON(JavaScript Object Notation)

目录

1、什么是JSON

2、数据交换格式

3、AJAX、Axios、JSON的关系

4、JSON基础语法

1)定义格式

2)值的数据类型及格式

5、使用Axios发送请求、以JSON格式传递数据

6、JSON串和Java对象的相互转换


1、什么是JSON

JSON是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,采用完全独立于语言的文本格式来存储和表示数据。

JSON是Web中非常流行的数据交换格式。进行异步请求时,服务器返回的响应体通常是JSON格式的字符串,要将其解析为JavaScript对象,或将数据转换为JSON格式发送给服务器。在JavaScript中,可以使用JSON.stringify()方法将JavaScript对象转换为JSON字符串,使用JSON.parse()方法将JSON字符串解析回JavaScript对象。但JSON本身并不局限于异步编程,它也可以用于同步操作。

2、数据交换格式

XML和JSON都是数据交换格式。

XML(eXtensible Markup Language)即可扩展标记语言,是一种用于编码文档的标记语言,它允许用户自定义标签来描述数据。XML被设计用来传输和存储数据,焦点是数据的内容。它是一种自描述性语言,可以表示复杂的数据结构,如树形结构,并且是独立于软件和硬件的信息传输工具。

<student>
    <name>Sheldon</name>
    <age>23</age>
    <city>北京</city>
</student>

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON 比 XML 更小、更快,更易解析。它是一个独立于语言的文本格式,但是使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

{    
    "name":"Sheldon",
    "age":23,
    "city":"北京"
}

3、AJAX、Axios、JSON的关系

他们有着密切的关系,特别是在处理网络请求和数据交换时。异步编程在JavaScript中通过AJAX、Axios等实现网络请求的发送和接收,并使用JSON处理数据的序列化和反序列化。可以在不阻塞主线程的情况下处理网络请求,提高Web应用响应性和性能。

AJAX、Axios、JSON并不仅仅局限于异步编程。

  • AJAX:主要关注在无需重新加载整个页面的情况下,实现与服务器的通信。它允许开发者创建更为动态和响应式的Web应用。这种与服务器的通信经常是异步的,因此AJAX常用于异步编程中。然而,AJAX本身不局限于异步操作,它更多的是一种构建Web应用的架构和策略。

  • Axios:是一个基于Promise的HTTP客户端,用于浏览器和node.js。它提供了一种简洁的方式发起HTTP请求,并处理响应。Axios的主要优势在于它简化了HTTP请求的发送和响应的处理,特别是通过Promise使得异步操作更加直观和易于管理。然而,Axios也可以用于同步请求,尽管这在实践中并不常见。

  • JSON:是一种轻量级的数据交换格式。主要用于在服务器和客户端之间传输数据。JSON数据可以很容易地被JavaScript解析和生成,因此它成为了Web开发中非常流行的数据格式。JSON与异步编程的关系在于,当进行异步请求时,服务器通常返回JSON格式的数据,而客户端则需要解析这些数据。但JSON本身并不局限于异步编程,它也可以用于同步操作。

  • JavaScript:用于处理用户交互、动态更新页面内容、发送HTTP请求等。当使用AJAX或Axios从服务器接收JSON数据时,JavaScript负责解析这些数据,并将其转换为可在代码中使用的对象或数组。

AJAX和Axios用于处理与服务器的请求和响应。
JSON用于在客户端和服务器之间交换数据。
JavaScript用于编写Web应用的逻辑,包括解析从服务器接收到的JSON数据。

这些技术通常一起使用,实现Web应用的动态性和交互性。

4、JSON基础语法

1)定义格式

var 变量名 = '{"key":value,"key":value,...}';

由键值对构成,多个键值对由逗号分隔;其中键必须用双引号括起来,值根据类型。例如:

var jsonStr = '{"name":"Sheldon","age":23,"addr":["北京","上海","西安"]}'

2)值的数据类型及格式

  • 数字(整数或浮点数)
  • 字符串(使用双引号括起来)
  • 逻辑值(true或者false)
  • 数组(在方括号中 [ ])如 {"persons":[{},{}]}
  • 对象(在花括号中,用{}定义json格式)如 {"address":{"province":"陕西"....}}
  • null

5、使用Axios发送请求、以JSON格式传递数据

使用Axios发送请求时,如果要携带复杂的数据都会以JSON格式进行传递。Axios是一个强大的工具,只需要将要提交的参数封装成js对象,并将这个js对象作为Axios的data属性值进行,它会自动将js对象转换为JSON串进行提交,也就是说Axios会自动对js对象和JSON串进行转换。

发送异步请求时,如果请求参数是JSON格式,请求方式必须是POST,因为JSON串需要放在请求体中。

var jsObject = {name:"mm"};

axios({
    method:"post",
    url:"http://localhost:8080/ajax-demo/axiosServlet",
    data:jsObject  //这里axios会将该js对象转换为json串
}).then(function (resp) {
    alert(resp.data);
})

6、JSON串和Java对象的相互转换

以 json 格式的数据进行前后端交互。前端发送请求时,如果是复杂的数据就会以 json 提交给后端;而后端如果需要响应一些复杂的数据时,也需要以 json 格式将数据响应回给浏览器。

后端需要重点掌握两部分操作,可以使用Fastjson提供的API。

  • 请求数据:JSON字符串转为Java对象
  • 响应数据:Java对象转为JSON字符串

怎样使用:

  • 导入坐标
    <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>fastjson</artifactId>
           <version>1.2.62</version>
    </dependency>
  • Java对象转JSON
    String jsonStr = JSON.toJSONString(obj);
  • JSON字符串转Java对象
    User user = JSON.parseObject(jsonStr, User.class);

应用举例:

public class FastJsonDemo {
    public static void main(String[] args) {
       //1. 将Java对象转为JSON字符串
       User user = new User();
       user.setId(1);
       user.setUsername("Sheldon");
       user.setPassword("123");
  
       String jsonString = JSON.toJSONString(user);                        
       
System.out.println(jsonString);//{"id":1,"password":"123","username":"Sheldon"}
  
       //2. 将JSON字符串转为Java对象
       User u = JSON.parseObject("{\"id\":1,\"password\":\"123\",\"username\":\"Sheldon\"}", User.class);
       System.out.println(u);
      }
  }
  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值