当前位置: 首页 > news >正文

【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

Insert image description here

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
Insert image description here
http://localhost:8080/springmvc_05_json_war_exploded//j7_utils_j2
Insert image description here
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

Insert image description here

        <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
    Insert image description here
  • Otherwise:
    Insert image description here
  • Execution
    http://localhost:8080/springmvc_05_json_war_exploded/j7_utils_j2
    Insert image description here
    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

Insert image description here

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
    Insert image description here
    Insert image description here

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_按键中断与串口中断

按键中断&#xff1a; 将按键配置成GPIO_EXTI中断即外部中断 模式有三种上升沿&#xff0c;下降沿&#xff0c;上升沿和下降沿都会中断 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系统的时候&#xff0c;经常会遇到电脑没网络&#xff0c;但又不知道具体怎么调整才好。 本篇内容适合插网线和使用Wi-Fi的小伙伴&#xff0c;文章本质上是重置电脑的网络设置。 注意事项&#xff1a;网络重置操作会让已连接过的wifi密码丢失&…...

easyexcel读和写excel

请直接看原文: JAVA使用easyexcel操作Excel-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- 之前写过一篇《JAVA操作Excel》&#xff0c;介绍了jxl和poi读写Excel的实现&am…...

路由器级联

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

CentOS7使用Docker部署.net Webapi

1 准备WebApi项目 对于已存在的WebApi项目&#xff0c;需要添加Docker支持&#xff1b; 编码时&#xff0c;先设置好项目需要的端口号&#xff1a;program.cs中&#xff0c;app.Run("http://*:8000");设置端口为&#xff1a;8000在VS中&#xff0c;选中项目&#xf…...

Windows程序员用MAC:初始设置(用起来像win一些)

初级代码游戏的专栏介绍与文章目录-CSDN博客 初用Mac会有很多不习惯&#xff0c;特别是鼠标滚轮的滚动方向和windows是反的&#xff0c;还好是通过设置改变的。下面是我自己的设置。 目录 一、显示器设置 二、屏保、时钟、触发角 三、程序坞与菜单栏 四、安全性与隐私 五…...

基于深度学习YOLOv8+Pyqt5的工地安全帽头盔佩戴检测识别系统(源码+跑通说明文件)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;318安全帽 获取完整源码源文件7000张已标注的数据集训练好的模型配置说明文件 可有偿59yuan一对一远程操作配置环境跑通程序 效果展示&#xff08;图片检测批量检测视频检测摄像头检测&#xff09; 基于深度学习YOLOv8Pyqt…...

csv编辑器是干什么的?

csv编辑器是一种用于编写、编辑和管理文本文件的工具。适用于 JetBrains IDE 系列的 CSV 编辑器插件&#xff0c;此插件将 CSV&#xff08;逗号分隔值&#xff09;作为一种语言引入 Jetbrains IDE&#xff0c;其中包含语法定义、结构化语言元素和关联的文件类型 &#xff08;.c…...

计算机网络——物理层(奈氏准则和香农定理)

计算机网络——物理层&#xff08;奈氏准则和香农定理&#xff09; 失真码间串扰奈氏准则&#xff08;奈奎斯特定理&#xff09;极限数据率 噪声信噪比香农定理奈氏准则和香农定理的区别 前面我们已经了解一些数据通信的基本知识&#xff0c;没有看过上一篇得小伙伴可以点击这里…...

XML语言的学习记录3-解析

学习笔记&#xff1a; 一、 解析XML文档&#xff1a; 1.使用 XMLHttpRequest 对象&#xff0c;将xml文档放入XML DOM对象中&#xff1a; xmlhttpnew XMLHttpRequest(); xmlhttp.open("GET","books.xml",false); xmlhttp.send(); xmlDocxmlhttp.response…...

【Linux】cat vim 命令存在着什么区别?

Linux 中的 cat 命令和 vim 命令之间存在一些显著的区别&#xff01; cat 命令 首先&#xff0c;cat命令主要用于连接并显示文件的内容。它的原含义是“连接&#xff08;concatenate&#xff09;”&#xff0c;可以将多个文件的内容连接起来&#xff0c;并输出到标准输出流中&…...

MeterSphere和Jmeter使用总结

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

学习笔记Day8:GEO数据挖掘-基因表达芯片

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

如何将大华dav视频转mp4?一键无损清晰转换~

Digital Audio Video&#xff08;DAV&#xff09;文件格式源于数字监控领域&#xff0c;旨在解决视频监控数据的存储和回放问题。随着数字监控技术的发展&#xff0c;DAV格式逐渐成为监控设备记录视频的标准格式&#xff0c;广泛应用于安防系统、摄像头监控等场景。 MP4文件格式…...

数字化转型导师坚鹏:人工智能在金融机构数字化转型中的应用

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

部署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 ​ 讲解稿全文&#xff1a; 导出功能讲解 这节课我们讲解一下导出功能&#xff0c; 导出功能&#xff0c;可以将当前查到的信息导出成E…...

java遍历文件目录去除中文文件名

文章目录 一、原始需求二、maven依赖三、核心代码四、运行结果 一、原始需求 需要遍历文件目录及其子目录&#xff0c;找出包含中文字符的文件名&#xff0c;将中文字符去除。 二、maven依赖 pom.xml <dependency><groupId>org.apache.commons</groupId>&…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...