【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

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

JavaEE7 Servlet 3.1(JSR 340)规范中文版

http://www.iteye.com/news/27727-jinnianshilongnian     Jave EE 7中的部分规范已正式获得批准通过,其中包括JSR340 Java Servlet 3.1规范,去年翻译了该规范,在此分享出来,希望对某些朋友有所帮助,不足之处请指正。   点击直接下载    在线版目录   Servlet3.1规范翻译

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json