【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

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum