后端程序员的前后端交互核心-JSON

关于JSON

1 JSON概述

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

2 JSON语法

  • [] 表示json数组
  • {} 表示json对象
  • “” 表示是属性名或字符串类型的值
  • : json数据都是由key和value组成
  • , json中的数据与数据之间的分隔
  • 举例:
    • JSON对象
      • {name:“宋柠檬”,age:30,gender :“女”,birthday:“2023-03-28”}
    • JSON数组
      • [{name:“宋柠檬”,age:30,gender:“女”,birthday:“2023-03-28”}, {name:“李柠檬”,age:25,sex:“男”,birthday:“2023-03-27”}]

3 Json技术

Json技术: JSON字符串的生成和解析

  • FastJson 阿里里巴巴
  • JackSon github
  • Gson google公司

4 JackSon

  • 创建ObjectMapper对象
    • ObjectMapper mapper = new ObjectMapper();
  • 将json字符串生成Java对象
    • mapper.readValue(json字符串,类对象)
  • 将json数组字符串生成Java对象
    • mapper.readValue(json字符串,数组[].class);
      • 先将字符串生成Java数组,再将数组转换成集合
    • mapper.readValue(json字符串,new TypeReference<ArrayList>(){});
    • mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, User.class));
  • 将Java对象解析成json字符串
    • mapper.writeValueAsString(对象|集合);

注意:

  • 日期类型转换的时候需要加上注解
    • @JsonFormat(pattern= “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”)
      JavaBean设计
  • 如果字段名与字符串中的key不一致。
    • @JsonProperty(“address”)
  • 忽略实体类中的属性(不进行json转换)
    • @JsonIgnore
public class TestJackson {
    //将java对象转换成json字符串
    @Test
    public void test01() throws JsonProcessingException {
        Emp emp = new Emp(4399,"前端","开发",7777,new Date(),4000d,0d,20,null);
        //将java对象转换成json字符串
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(emp);
        System.out.println(json);
    }
    //将java对象集合转换成json字符串
    @Test
    public void test02() throws JsonProcessingException {
        List<Emp> empList = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            Emp emp = new Emp(4399+i,"前端"+i,"开发"+i,7777,new Date(),4000d,0d,20,null);
            empList.add(emp);
        }
        //将java对象集合转换成json字符串
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(empList);
        System.out.println(json);
    }

    //将json格式的字符串转成java对象
    @Test
    public void test03() throws IOException {
        String json = "{\"empno\":4399,\"ename\":\"前端\",\"job1\":\"开发\",\"mgr\":7777,\"hiredate\":1634007374014,\"sal\":4000.0,\"comm\":0.0,\"deptno\":20,\"image\":null}";
        //将json格式的字符串转成java对象
        ObjectMapper mapper = new ObjectMapper();
        Emp emp = mapper.readValue(json, Emp.class);
        System.out.println(emp);
    }

    //将json数组格式的字符串转成java对象集合
    @Test
    public void test04() throws IOException {
        String json = "[{\"empno\":4399,\"ename\":\"前端0\",\"job\":\"开发0\",\"mgr\":7777,\"hiredate\":1634007490425,\"sal\":4000.0,\"comm\":0.0,\"deptno\":20,\"image\":null},{\"empno\":4400,\"ename\":\"前端1\",\"job\":\"开发1\",\"mgr\":7777,\"hiredate\":1634007490425,\"sal\":4000.0,\"comm\":0.0,\"deptno\":20,\"image\":null},{\"empno\":4401,\"ename\":\"前端2\",\"job\":\"开发2\",\"mgr\":7777,\"hiredate\":1634007490425,\"sal\":4000.0,\"comm\":0.0,\"deptno\":20,\"image\":null},{\"empno\":4402,\"ename\":\"前端3\",\"job\":\"开发3\",\"mgr\":7777,\"hiredate\":1634007490425,\"sal\":4000.0,\"comm\":0.0,\"deptno\":20,\"image\":null},{\"empno\":4403,\"ename\":\"前端4\",\"job\":\"开发4\",\"mgr\":7777,\"hiredate\":1634007490425,\"sal\":4000.0,\"comm\":0.0,\"deptno\":20,\"image\":null}]";
        //将json数组格式的字符串转成java对象集合
        ObjectMapper mapper = new ObjectMapper();
        //方式1:
        //Emp[] emps = mapper.readValue(json, Emp[].class);
        //将数组转换成List集合
        //List<Emp> empList = Arrays.asList(emps);
        //empList.forEach(System.out::println);

        //方式2:
        List<Emp> empList = mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, Emp.class));
        empList.forEach(System.out::println);
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Java前后端交互通常使用HTTP协议进行通信。通常情况下,前端通过发送HTTP请求(如GET、POST等)向后端发送请求,后端接收请求并处理请求后,将响应内容返回给前端。 具体地说,Java后端通常会使用Servlet或SpringMVC等框架来处理HTTP请求。当前端发送请求时,Java后端会根据请求的URL映射到相应的Servlet或Controller进行处理,处理完成后将响应内容(如JSON、HTML等)返回给前端。 在Java后端处理HTTP请求时,通常会使用一些常见的框架和工具,如Spring Boot、MyBatis、Hibernate等。这些框架和工具可以帮助开发者快速地开发出高效、可靠的Web应用程序。 ### 回答2: 在Java前后端交互过程中,通常使用HTTP协议作为数据传输的基础。以下是Java前后端交互的主要步骤: 1. 客户端发起请求:前端通过发送HTTP请求向后端请求数据或提交表单。可以使用Ajax技术异步发送请求,也可以通过表单的方式同步发送请求。 2. 服务端接收请求:后端接收到请求后,根据请求的URL和参数进行处理,并根据业务逻辑查询数据库或处理其他操作。 3. 数据处理与封装:后端根据业务逻辑处理请求的数据,可以进行数据查询、计算或其他操作,并将处理后的数据封装为特定的数据结构,如JSON、XML等格式。 4. 数据传输:后端通过HTTP协议将处理后的数据作为响应的内容返回给前端。可以使用Servlet、Spring MVC等框架来处理HTTP协议,将数据封装为HTTP响应。 5. 前端处理响应:前端接收到后端返回的数据后,根据需要进行解析和处理,可以使用JavaScript等前端语言解析JSON、XML等格式的数据,并将数据展示到页面中。 6. 前端更新页面:根据后端返回的数据,前端可以更新页面内容、刷新页面、展示提示信息等操作,以提供更好的用户交互体验。 整个过程中,Java前端和后端通过HTTP协议进行数据的传输。前端发送请求到后端后端处理请求并返回响应数据给前端,前端接收到响应数据后进行解析和处理。通过这种交互方式,前后端可以实现数据的传递和页面的更新,从而实现丰富的网页功能。 ### 回答3: Java前后端交互是指前端(通常是浏览器)和后端Java服务器)之间通过网络传递数据和请求的过程。 Java前端与后端的交互过程可以归纳为以下几个步骤: 1. 前端向后端发送请求:前端通过HTTP协议向后端发送请求,常见的请求方式有GET和POST。请求可以包含参数,比如表单数据、URL中的查询参数等。 2. 后端接收请求:后端服务器接收到前端发送的请求,根据请求的URL和方法来确定需要执行的业务逻辑。 3. 后端处理请求:后端根据具体的业务需求处理请求,可能会涉及到数据库操作、计算逻辑、文件读写等各种操作。 4. 后端生成响应:后端处理完请求后,会生成响应数据。响应数据可以是HTML、JSON、XML等格式,其中一种常见的方式是使用Java中的Servlet技术生成响应。 5. 后端向前端发送响应:后端将生成的响应数据通过HTTP协议发送给前端,前端浏览器会根据响应的格式进行解析,并进行相应的展示和处理。 6. 前端展示响应:前端浏览器接收到后端发送的响应数据后,会将其展示给用户。如果响应数据是动态生成的,前端可能还会进行进一步的处理和渲染。 以上就是Java前后端交互的基本流程。可以通过HTTP协议实现前后端之间的数据传输和通信,Java后端通过接收和处理前端请求,生成相应的响应数据,并将其发送给前端,完成前后端的交互过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yinying293

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值