【WEEK3】 【DAY4】JSON交互处理第三部分【中文版】

2024-03-18 19:04

本文主要是介绍【WEEK3】 【DAY4】JSON交互处理第三部分【中文版】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2024.3.14 Thursday

接上文【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】

目录

  • 6.7.编写抽象类
    • 6.7.1.原因
    • 6.7.2.新建JsonUtils.java
    • 6.7.3.在UserController添加一个方法json6验证抽象类可调用
    • 6.7.4.在UserController添加一个方法json7验证该抽象类可复用
    • 6.7.5.运行
  • 6.8.FastJson
    • 6.8.1.概况
      • 6.8.1.1.fastjson.jar简介
      • 6.8.1.2.Fastjson三个主要的类
        • 1. JSONObject代表json对象
        • 2. JSONArray代表 json 对象数组
        • 3. JSON代表 JSONObject和JSONArray的转化
    • 6.8.2.在pom.xml中导入依赖
    • 6.8.3.代码测试
      • 6.8.3.1. 修改UserController中的方法json7
      • 6.8.3.2.新建一个FastJsonDemo.java
    • 6.8.4.提示

6.7.编写抽象类

6.7.1.原因

如果要经常使用上述功能,每次书写比较麻烦,我们可以将这些代码封装到一个工具类中

6.7.2.新建JsonUtils.java

在这里插入图片描述

package P14.utils;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;import java.text.SimpleDateFormat;public class JsonUtils {//本方法对getJson进行方法重载,不必重写一遍具体代码,只需要将默认值返回即可public static String getJson(Object object) {return getJson(object,"yyyy-MM-dd HH:mm:ss");}public static String getJson(Object object,String dateFormat) {ObjectMapper mapper = new ObjectMapper();//不使用时间差的方式mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);//自定义日期格式对象SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);//指定日期格式mapper.setDateFormat(sdf);try {return mapper.writeValueAsString(object);} catch (JsonProcessingException e) {e.printStackTrace();}return null;}
}

6.7.3.在UserController添加一个方法json6验证抽象类可调用

    @RequestMapping("/j6_utils")public String json6(){Date date = new Date();return JsonUtils.getJson(date,"yyyy-MM-dd HH:mm:ss");
//        HH 是24小时的 hh是12小时的
//        return JsonUtils.getJson(date);亦可}

6.7.4.在UserController添加一个方法json7验证该抽象类可复用

@RequestMapping("/j7_utils_j2")public String json7() throws JsonProcessingException {//创建集合List<User> userList = new ArrayList<>();User user1 = new User("张三",11,"female");User user2 = new User("李四",11,"male");User user3 = new User("王五",11,"female");//将user加入集合userList.add(user1);userList.add(user2);userList.add(user3);return JsonUtils.getJson(userList);}

6.7.5.运行

http://localhost:8080/springmvc_05_json_war_exploded//j6_utils
在这里插入图片描述
http://localhost:8080/springmvc_05_json_war_exploded//j7_utils_j2
在这里插入图片描述
运行调用方法json7得出的结果和方法json2完全相同

6.8.FastJson

6.8.1.概况

6.8.1.1.fastjson.jar简介

fastjson.jar是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。实现json的转换方法很多,最后的实现结果都是一样的。

6.8.1.2.Fastjson三个主要的类

1. JSONObject代表json对象
  • JSONObject实现了Map接口, 猜想JSONObject底层操作是由Map实现的。
  • JSONObject对应json对象,通过各种形式的get()方法可以获取json对象中的数据,也可利用诸如size(),isEmpty()等方法获取"键:值"对的个数和判断是否为空
2. JSONArray代表 json 对象数组
  • 内部是有List接口中的方法来完成操作的。
3. JSON代表 JSONObject和JSONArray的转化
  • JSON类源码分析与使用
  • 仔细观察这些方法,主要是实现json对象,json对象数组,javabean对象,json字符串之间的相互转化。

6.8.2.在pom.xml中导入依赖

在这里插入图片描述

        <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.60</version></dependency>

6.8.3.代码测试

6.8.3.1. 修改UserController中的方法json7

改为使用fastjson作为抽象类返回值

@RequestMapping("/j7_utils_j2")public String json7() throws JsonProcessingException {//创建集合List<User> userList = new ArrayList<>();User user1 = new User("张三",11,"female");User user2 = new User("李四",11,"male");User user3 = new User("王五",11,"female");//将user加入集合userList.add(user1);userList.add(user2);userList.add(user3);//        return JsonUtils.getJson(userList);
//        使用fastjson解析如下String str = JSON.toJSONString(userList);return str;}
  • 运行前要记得在Project Structure中添加fastjson依赖包
    在这里插入图片描述
  • 否则:
    在这里插入图片描述
  • 运行
    http://localhost:8080/springmvc_05_json_war_exploded/j7_utils_j2
    在这里插入图片描述
    使用fastjson后,json7得出的结果和方法json2仍然完全相同(与修改json7之前也相同)

6.8.3.2.新建一个FastJsonDemo.java

在这里插入图片描述

package P14.controller;import P14.project.User;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;@RestController
public class FastJsonDemo {@RequestMapping("/fj")public String fastjson(){//创建一个对象User user1 = new User("张三", 3, "男");User user2 = new User("李四", 3, "男");User user3 = new User("王五", 3, "男");User user4 = new User("赵六", 3, "男");List<User> list = new ArrayList<User>();list.add(user1);list.add(user2);list.add(user3);list.add(user4);System.out.println("*******Java对象 转 JSON字符串*******");String str1 = JSON.toJSONString(list);System.out.println("JSON.toJSONString(list)==>"+str1);String str2 = JSON.toJSONString(user1);System.out.println("JSON.toJSONString(user1)==>"+str2);System.out.println("\n****** JSON字符串 转 Java对象*******");User jp_user1=JSON.parseObject(str2,User.class);System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1);System.out.println("\n****** Java对象 转 JSON对象 ******");JSONObject jsonObject1 = (JSONObject) JSON.toJSON(user2);System.out.println("(JSONObject) JSON.toJSON(user2)==>"+jsonObject1.getString("name"));System.out.println("\n****** JSON对象 转 Java对象 ******");User to_java_user = JSON.toJavaObject(jsonObject1, User.class);System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+to_java_user);return str1;}
}
  • 运行(以Java对象 转 JSON字符串作为页面输出)
    http://localhost:8080/springmvc_05_json_war_exploded/fj
    在这里插入图片描述
    在这里插入图片描述

6.8.4.提示

  • 这种工具类,我们只需要掌握使用就好了,在使用的时候在根据具体的业务去找对应的实现。和以前的commons-io那种工具包一样,拿来用就好了!
  • JSON在数据传输中十分重要,一定要学会使用。

这篇关于【WEEK3】 【DAY4】JSON交互处理第三部分【中文版】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详