当前位置: 首页 > 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>&…...

RPFM v4.7.102:Total War MOD开发工具的技术架构重构与性能优化

RPFM v4.7.102&#xff1a;Total War MOD开发工具的技术架构重构与性能优化 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt5 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: ht…...

UniApp+AI智能客服实战:从零构建高效对话系统的避坑指南

最近在做一个跨平台的智能客服项目&#xff0c;用UniApp来打主力。过程中踩了不少坑&#xff0c;也总结了一些实用的经验&#xff0c;今天就来聊聊怎么从零开始&#xff0c;在UniApp里构建一个既高效又稳定的AI对话系统。我们的目标是&#xff1a;响应快、不掉线、多端体验一致…...

低空经济赛道——深圳低空经济发展规划

摘要 深圳规划2026年建成1200个起降点&#xff0c;配套5G-A基站8000个&#xff0c;预计带动物流、文旅产业规模增长30%。本文分析了深圳低空经济规划的整体布局、基础设施建设和产业发展前景。规划概述 1. 总体目标 深圳低空经济规划2026目标: ┌───────────────…...

2FAuth企业级应用场景:团队协作、权限管理和安全审计全攻略

2FAuth企业级应用场景&#xff1a;团队协作、权限管理和安全审计全攻略 【免费下载链接】2FAuth A Web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes 项目地址: https://gitcode.com/gh_mirrors/2f/2FAuth 在数字化…...

DALL-E 2图像生成完整指南:从基础到高级后处理技巧

DALL-E 2图像生成完整指南&#xff1a;从基础到高级后处理技巧 【免费下载链接】DALLE2-pytorch Implementation of DALL-E 2, OpenAIs updated text-to-image synthesis neural network, in Pytorch 项目地址: https://gitcode.com/gh_mirrors/da/DALLE2-pytorch DALL-…...

[特殊字符] mPLUG-Owl3-2B多模态交互工具:从安装到多轮视觉问答的完整实操手册

&#x1f989; mPLUG-Owl3-2B多模态交互工具&#xff1a;从安装到多轮视觉问答的完整实操手册 1. 工具简介&#xff1a;你的本地图文对话助手 今天给大家介绍一个特别实用的工具——mPLUG-Owl3-2B多模态交互工具。简单来说&#xff0c;这是一个能看懂图片并回答问题的本地AI助…...

YOLOE镜像使用全解析:文本、视觉、无提示三种模式怎么选

YOLOE镜像使用全解析&#xff1a;文本、视觉、无提示三种模式怎么选 1. YOLOE镜像核心能力概述 YOLOE&#xff08;You Only Look at Everything&#xff09;是新一代开放词汇目标检测与分割模型&#xff0c;其官方镜像集成了完整的推理和训练环境。相比传统封闭词汇检测模型&…...

从部署到对话:Qwen3-0.6B-FP8图文并茂的完整操作流程

从部署到对话&#xff1a;Qwen3-0.6B-FP8图文并茂的完整操作流程 1. 开篇&#xff1a;为什么选择Qwen3-0.6B-FP8&#xff1f; 如果你正在寻找一个能在普通电脑上流畅运行&#xff0c;同时又能干点“聪明事”的AI模型&#xff0c;那么Qwen3-0.6B-FP8很可能就是你的菜。 想象一…...

k8s入门到实战(二)—— Windows下Minikube安装避坑与快速验证

1. 为什么选择Minikube作为Kubernetes学习工具 刚开始接触Kubernetes时&#xff0c;我完全被它的复杂性吓到了。光是搭建一个最简单的集群就需要配置各种证书、网络插件和存储系统&#xff0c;更别提后续的维护了。直到发现了Minikube这个神器&#xff0c;才真正打开了我的Kube…...

iii统一后端执行引擎入门指南:如何用三大原语重构你的后端架构

iii统一后端执行引擎入门指南&#xff1a;如何用三大原语重构你的后端架构 【免费下载链接】iii Event-based orchestration framework for agents and intelligent automations 项目地址: https://gitcode.com/GitHub_Trending/mo/iii 还在为后端开发中API框架、任务队…...