【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

相关文章

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA