【WEEK3】 【DAY4】JSON Interaction Handling Part Three【English Version】
2024.3.14 Thursday
Following the previous article 【WEEK3】 【DAY3】JSON Interaction Handling Part Two【English Version】
Contents
- 6.7. Writing Abstract Classes
- 6.7.1. Reason
- 6.7.2. Create JsonUtils.java
- 6.7.3. Add a method json6 in UserController to verify the abstract class can be called
- 6.7.4. Add a method json7 in UserController to verify the abstract class is reusable
- 6.7.5. Run
- 6.8. FastJson
- 6.8.1. Overview
- 6.8.1.1 Introduction to fastjson.jar
- 6.8.1.2. Three main classes of Fastjson
- 1. JSONObject represents a JSON object
- 2. JSONArray represents a JSON object array
- 3. JSON represents the conversion between JSONObject and JSONArray
- 6.8.2. Import dependencies in pom.xml
- 6.8.3. Code Testing
- 6.8.3.1.Modify the method json7 in UserController
- 6.8.3.2. Create a new FastJsonDemo.java
- 6.8.4. Tips
6.7. Writing Abstract Classes
6.7.1. Reason
If the above functions are frequently used, it can be cumbersome to write them each time, so we can encapsulate these codes into a utility class.
6.7.2. Create 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 {// This method overloads getJson, so there is no need to rewrite the specific code; simply return the default value.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();// Do not use time difference methodmapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);// Custom date format objectSimpleDateFormat sdf = new SimpleDateFormat(dateFormat);// Specify date formatmapper.setDateFormat(sdf);try {return mapper.writeValueAsString(object);} catch (JsonProcessingException e) {e.printStackTrace();}return null;}
}
6.7.3. Add a method json6 in UserController to verify the abstract class can be called
@RequestMapping("/j6_utils")public String json6(){Date date = new Date();return JsonUtils.getJson(date, "yyyy-MM-dd HH:mm:ss");
// HH is for 24-hour format, hh is for 12-hour format
// return JsonUtils.getJson(date); is also possible}
6.7.4. Add a method json7 in UserController to verify the abstract class is reusable
@RequestMapping("/j7_utils_j2")public String json7() throws JsonProcessingException {// Create a collectionList<User> userList = new ArrayList<>();User user1 = new User("Zhang San", 11, "female");User user2 = new User("Li Si", 11, "male");User user3 = new User("Wang Wu", 11, "female");// Add users to the collectionuserList.add(user1);userList.add(user2);userList.add(user3);return JsonUtils.getJson(userList);}
6.7.5. Run
http://localhost:8080/springmvc_05_json_war_exploded//j6_utils
http://localhost:8080/springmvc_05_json_war_exploded//j7_utils_j2
The result obtained by running method json7 is exactly the same as method json2.
6.8. FastJson
6.8.1. Overview
6.8.1.1 Introduction to fastjson.jar
fastjson.jar
is a package developed by Alibaba specifically for Java development, which can conveniently implement the conversion between JSON objects and JavaBean objects, the conversion between JavaBean objects and JSON strings, and the conversion between JSON objects and JSON strings. There are many methods to implement JSON conversion, and the final results are all the same.
6.8.1.2. Three main classes of Fastjson
1. JSONObject represents a JSON object
- JSONObject implements the Map interface, suggesting that JSONObject’s underlying operations are implemented by Map.
- JSONObject corresponds to a JSON object, through various forms of get() methods you can get data from a JSON object, and also use methods such as size(), isEmpty() to get the number of “key-value” pairs and determine whether it is empty.
2. JSONArray represents a JSON object array
- Internally it uses methods from the List interface to complete operations.
3. JSON represents the conversion between JSONObject and JSONArray
- Analysis and usage of JSON class source code.
- Carefully observing these methods, the main purpose is to implement the conversion between JSON objects, JSON object arrays, JavaBean objects, and JSON strings.
6.8.2. Import dependencies in pom.xml
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.60</version></dependency>
6.8.3. Code Testing
6.8.3.1.Modify the method json7 in UserController
Change it to use fastjson as the return value of the abstract class
@RequestMapping("/j7_utils_j2")public String json7() throws JsonProcessingException {// Create a collectionList<User> userList = new ArrayList<>();User user1 = new User("Zhang San", 11, "female");User user2 = new User("Li Si", 11, "male");User user3 = new User("Wang Wu", 11, "female");// Add users to the collectionuserList.add(user1);userList.add(user2);userList.add(user3);// return JsonUtils.getJson(userList);
// Parsing with fastjson is as followsString str = JSON.toJSONString(userList);return str;}
- Before running, remember to add the fastjson dependency package in Project Structure
- Otherwise:
- Execution
http://localhost:8080/springmvc_05_json_war_exploded/j7_utils_j2
After using fastjson, the result of json7 is still exactly the same as method json2 (the same as before modifying json7).
6.8.3.2. Create a new 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(){// Create an objectUser user1 = new User("Zhang San", 3, "male");User user2 = new User("Li Si", 3, "male");User user3 = new User("Wang Wu", 3, "male");User user4 = new User("Zhao Liu", 3, "male");List<User> list = new ArrayList<User>();list.add(user1);list.add(user2);list.add(user3);list.add(user4);System.out.println("*******Java Object to JSON String*******");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 String to Java Object*******");User jp_user1 = JSON.parseObject(str2, User.class);System.out.println("JSON.parseObject(str2,User.class)==>" + jp_user1);System.out.println("\n****** Java Object to JSON Object ******");JSONObject jsonObject1 = (JSONObject) JSON.toJSON(user2);System.out.println("(JSONObject) JSON.toJSON(user2)==>" + jsonObject1.getString("name"));System.out.println("\n****** JSON Object to Java Object ******");User to_java_user = JSON.toJavaObject(jsonObject1, User.class);System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+to_java_user);return str1;}
}
- Run (Output a JSON string from a Java object as the page response)
http://localhost:8080/springmvc_05_json_war_exploded/fj
6.8.4. Tips
- For such utility classes, it is enough for us to know how to use them. When using them, we should look for the corresponding implementation based on the specific business needs, just like the commons-io toolkit we used before; just use it!
- JSON is very important in data transmission; it is essential to learn how to use it.
相关文章:

【WEEK3】 【DAY4】JSON Interaction Handling Part Three【English Version】
2024.3.14 Thursday Following the previous article 【WEEK3】 【DAY3】JSON Interaction Handling Part Two【English Version】 Contents 6.7. Writing Abstract Classes6.7.1. Reason6.7.2. Create JsonUtils.java6.7.3. Add a method json6 in UserController to verify…...

蓝桥杯物联网竞赛_STM32L071_12_按键中断与串口中断
按键中断: 将按键配置成GPIO_EXTI中断即外部中断 模式有三种上升沿,下降沿,上升沿和下降沿都会中断 external -> 外部的 interrupt -> 打断 trigger -> 触发 detection -> 探测 NVIC中将中断线ENABLE 找接口函数 在接口函数中写…...

Java安全 反序列化(1) URLDNS链原理分析
Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为UR…...

电脑插上网线之后仍然没网络怎么办?
前言 有小伙伴在使用Windows系统的时候,经常会遇到电脑没网络,但又不知道具体怎么调整才好。 本篇内容适合插网线和使用Wi-Fi的小伙伴,文章本质上是重置电脑的网络设置。 注意事项:网络重置操作会让已连接过的wifi密码丢失&…...
easyexcel读和写excel
请直接看原文: JAVA使用easyexcel操作Excel-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- 之前写过一篇《JAVA操作Excel》,介绍了jxl和poi读写Excel的实现&am…...

路由器级联
目录 一、实现功能二、实现步骤2.1 接线步骤 三、效果3.1 常规连接3.2 路由器级联 一、实现功能 主路由器:可有WiFi功能,LAN口下接各设备,并接一个辅路由器辅路由器:开启WiFi功能,有线或无线下接各设备功能࿱…...

CentOS7使用Docker部署.net Webapi
1 准备WebApi项目 对于已存在的WebApi项目,需要添加Docker支持; 编码时,先设置好项目需要的端口号:program.cs中,app.Run("http://*:8000");设置端口为:8000在VS中,选中项目…...
Windows程序员用MAC:初始设置(用起来像win一些)
初级代码游戏的专栏介绍与文章目录-CSDN博客 初用Mac会有很多不习惯,特别是鼠标滚轮的滚动方向和windows是反的,还好是通过设置改变的。下面是我自己的设置。 目录 一、显示器设置 二、屏保、时钟、触发角 三、程序坞与菜单栏 四、安全性与隐私 五…...

基于深度学习YOLOv8+Pyqt5的工地安全帽头盔佩戴检测识别系统(源码+跑通说明文件)
wx供重浩:创享日记 对话框发送:318安全帽 获取完整源码源文件7000张已标注的数据集训练好的模型配置说明文件 可有偿59yuan一对一远程操作配置环境跑通程序 效果展示(图片检测批量检测视频检测摄像头检测) 基于深度学习YOLOv8Pyqt…...
csv编辑器是干什么的?
csv编辑器是一种用于编写、编辑和管理文本文件的工具。适用于 JetBrains IDE 系列的 CSV 编辑器插件,此插件将 CSV(逗号分隔值)作为一种语言引入 Jetbrains IDE,其中包含语法定义、结构化语言元素和关联的文件类型 (.c…...

计算机网络——物理层(奈氏准则和香农定理)
计算机网络——物理层(奈氏准则和香农定理) 失真码间串扰奈氏准则(奈奎斯特定理)极限数据率 噪声信噪比香农定理奈氏准则和香农定理的区别 前面我们已经了解一些数据通信的基本知识,没有看过上一篇得小伙伴可以点击这里…...
XML语言的学习记录3-解析
学习笔记: 一、 解析XML文档: 1.使用 XMLHttpRequest 对象,将xml文档放入XML DOM对象中: xmlhttpnew XMLHttpRequest(); xmlhttp.open("GET","books.xml",false); xmlhttp.send(); xmlDocxmlhttp.response…...
【Linux】cat vim 命令存在着什么区别?
Linux 中的 cat 命令和 vim 命令之间存在一些显著的区别! cat 命令 首先,cat命令主要用于连接并显示文件的内容。它的原含义是“连接(concatenate)”,可以将多个文件的内容连接起来,并输出到标准输出流中&…...

MeterSphere和Jmeter使用总结
一、MeterSphere 介绍 MeterSphere 是⼀站式开源持续测试平台,涵盖测试跟踪、接⼝测试、UI 测试和性能测试等,全 ⾯兼容 JMeter、Selenium 等主流开源标准,能够有效助⼒开发和测试团队在线共享协作,实现端到 端的测试管理跟踪…...

学习笔记Day8:GEO数据挖掘-基因表达芯片
GEO数据挖掘 数据库:GEO、NHANCE、TCGA、ICGC、CCLE、SEER等 数据类型:基因表达芯片、转录组、单细胞、突变、甲基化、拷贝数变异等等 常见图表 表达矩阵 一行为一个基因,一列为一个样本,内容是基因表达量。 热图 输入数据…...

如何将大华dav视频转mp4?一键无损清晰转换~
Digital Audio Video(DAV)文件格式源于数字监控领域,旨在解决视频监控数据的存储和回放问题。随着数字监控技术的发展,DAV格式逐渐成为监控设备记录视频的标准格式,广泛应用于安防系统、摄像头监控等场景。 MP4文件格式…...

数字化转型导师坚鹏:人工智能在金融机构数字化转型中的应用
人工智能在金融机构数字化转型中的应用 课程背景: 金融机构数字化转型离不开人工智能,在金融机构数字化转型中,人工智能起到至关重要的作用,很多机构存在以下问题: 不清楚人工智能产业对我们有什么影响?…...

部署Zabbix Agents添加使能监测服务器_Windows平台_MSI/Archive模式
Windows平台 一、从MSI安装Windows代理,添加Windows Servers/PC 概述 可以从Windows MSI安装包(32位或64位) 安装Zabbix agent 32位包不能安装在64位Windows中 所有软件包都支持TLS,配置TLS可选 支持UI和命令行的安装。 1、下载Agent代理程序,使用Agent2升级版,官网链接如…...

十一 超级数据查看器 讲解稿 详情6 导出功能
十一 超级数据查看器 讲解稿 详情6 导出功能 点击此处 以新页面 打开B站 播放当前教学视频 app下载地址 百度手机助手 下载地址4 讲解稿全文: 导出功能讲解 这节课我们讲解一下导出功能, 导出功能,可以将当前查到的信息导出成E…...
java遍历文件目录去除中文文件名
文章目录 一、原始需求二、maven依赖三、核心代码四、运行结果 一、原始需求 需要遍历文件目录及其子目录,找出包含中文字符的文件名,将中文字符去除。 二、maven依赖 pom.xml <dependency><groupId>org.apache.commons</groupId>&…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...