fastJSON工具类

1 总结

1: JSONObject: 理解为 Map

2:JSONArray : 理解为List<Map>

3:JSON.toJSONString();会将时间转为时间戳

4:toJSONStringWithDateFormat 同一个字符串中 时间格式是统一格式

2 转成字符串

   将对象变成JSON 字符串。

		MyUser myUser = new MyUser();myUser.setName("小明");myUser.setTime(new Date());String s = JSON.toJSONString(myUser);System.out.println(s);//{"name":"小明","time":1724142861727}

 JSONObject 变成字符串

		JSONObject jsonObject = new JSONObject();jsonObject.put("name", "小明");String jsonString = jsonObject.toJSONString();System.out.println(jsonString);{"name":"小明"}

过滤器将对象转为 JSON 字符串(特殊字段转我们想要的格式)

例如 时间date转为字符串

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");MyUser myUser = new MyUser();myUser.setName("小明");myUser.setTime(new Date());ValueFilter filter = (object, name, value) -> {//object 是整个MyUser对象// MyUser(name=小明, addrList=null, time=Tue Aug 20 16:58:08 CST 2024, timeStr=null)//name 是属性名  value是属性值if (name.equals("time")) {if(value !=null){//格式话时间return sdf.format(value);}}return value;};String jsonString = JSON.toJSONString(myUser, filter);System.out.println(myUser);System.out.println(jsonString);
MyUser(name=小明, addrList=null, time=Tue Aug 20 17:02:10 CST 2024, timeStr=null)
{"name":"小明","time":"2024-08-20"}

3  字符串转成对象

     字符串解析为 对象

String str="{\"name\":\"小明\"}";
MyUser myUser = JSON.parseObject(str, MyUser.class);
String str="{\"name\":\"小明\"}";
MyUser myUser2 = JSON.toJavaObject(JSON.parseObject(str), MyUser.class);

  字符串解析为 对象或map (时间戳转成字符串)

serializerfeature.writemapnullvalue是Fastjson序列化器的一个特性,它表示在序列化过程中是否将Map中值为null的键值对也进行序列化输出

		MyUser myUser = new MyUser();myUser.setName("小明");myUser.setTime(new Date());String s = JSON.toJSONString(myUser);System.out.println(s);Map map = JSON.parseObject(JSON.toJSONStringWithDateFormat(myUser, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue),Map.class);System.out.println(map);MyStudent myStudent = JSON.parseObject(JSON.toJSONStringWithDateFormat(myUser, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue),MyStudent.class);MyStudent myStudent = JSON.parseObject(JSON.toJSONStringWithDateFormat(myUser, "yyyy-MM-dd HH:mm:ss"),MyStudent.class);{"name":"小明","time":1724143709217}
{name=小明, time=2024-08-20 16:48:29}

  字符串解析为 JSONObject

String str="{\"name\":\"小明\"}";
JSONObject jsonObject = JSON.parseObject(str);
String name = jsonObject.getString("name");

4  字符串转成集合

转成对象集合(2种方式)

		ArrayList<MyUser> list = new ArrayList<>();list.add(new MyUser("小明",new Date()));list.add(new MyUser("小红",new Date()));String jsonString = JSON.toJSONString(list);List<MyUser> list2 = JSON.parseObject(jsonString, new TypeReference<List<MyUser>>() {});List<MyUser> list1 = JSON.parseObject(jsonString, List.class);System.out.println(jsonString);System.out.println(list1);
[{"name":"小明","time":1724148459440},{"name":"小红","time":1724148459440}]
[{"name":"小明","time":1724148459440}, {"name":"小红","time":1724148459440}]

转成JSONArray

		ArrayList<MyUser> list = new ArrayList<>();list.add(new MyUser("小明",new Date()));list.add(new MyUser("小红",new Date()));String jsonString = JSON.toJSONString(list);JSONArray jSONArray = JSON.parseArray(jsonString);for (int i = 0; i < jSONArray.size(); i++) {JSONObject jsonObject = jSONArray.getJSONObject(i);}System.out.println(jsonString);System.out.println(jSONArray);
[{"name":"小明","time":1724148459440},{"name":"小红","time":1724148459440}]
[{"name":"小明","time":1724148459440}, {"name":"小红","time":1724148459440}]

5  字符串转成泛型

对象解析

	ArrayList<MyUser> list = new ArrayList<>();list.add(new MyUser("小明",new Date()));list.add(new MyUser("小红",new Date()));Result result = new Result<List<MyUser>>();result.setData(list);String jsonString = JSON.toJSONString(result);Result<List<MyUser>> listResult = JSON.parseObject(jsonString, new TypeReference<Result<List<MyUser>>>() {});System.out.println(jsonString);System.out.println(listResult);{"data":[{"name":"小明","time":1724149088849},{"name":"小红","time":1724149088849}]}
Result(data=[MyUser(name=小明, time=Tue Aug 20 18:18:08 CST 2024), MyUser(name=小红, time=Tue Aug 20 18:18:08 CST 2024)])

 集合解析

		ArrayList<MyUser> list = new ArrayList<>();list.add(new MyUser("小明",new Date()));list.add(new MyUser("小红",new Date()));String jsonString = JSON.toJSONString(list);List<MyUser> list2 = JSON.parseObject(jsonString, new TypeReference<List<MyUser>>() {});System.out.println(jsonString);System.out.println(list2);

6  转字节

    JSONObject jsonObject = new JSONObject();jsonObject.put("name", "小明");byte[] jsonBytes = JSON.toJSONBytes(jsonObject);String jsonString = new String(jsonBytes);System.out.println(jsonString);

7 其他

7.1检查 JSON 字符串是否合法

boolean valid = JSON.isValid(jsonString);

7.2 JSONObject api

 抽出公共

    String json = "{\"name\":\"小明\",\"age\":10}";JSONObject jsonObject = JSON.parseObject(json);

 7.2.1   合并两个 JSON 对象属性

    String jsonStr1 = "{\"name\":\"小明\"}";String jsonStr2 = "{\"age\":10}";JSONObject jsonObject1 = JSON.parseObject(jsonStr1);JSONObject jsonObject2 = JSON.parseObject(jsonStr2);jsonObject1.putAll(jsonObject2);System.out.println(jsonObject1.toJSONString());

是否包含指定的键

    boolean containsName = jsonObject.containsKey("name");System.out.println(containsName );

对象中添加键值对

        jsonObject.put("phone", "123-456-7890");jsonObject.putAll(additionalData);

键集合。

   Set<String> keys = jsonObject.keySet();for (String key : keys) {System.out.println("Key: " + key);}

值集合

   Collection<Object> values = jsonObject.values();for (Object value : values) {System.out.println("Value: " + value);}

删除指定的键

     jsonObject.remove("name");

清空所有键值对。

    jsonObject.clear();

检查对象是否为空

boolean empty = jsonObject.isEmpty();

检查是否包含指定的值

     boolean contains = jsonObject.containsValue("小明");

如果不存在键,则向 JSON 对象添加键值对

   JSONObject jsonObject = new JSONObject();jsonObject.put("name", "小明");jsonObject.putIfAbsent("age", 10); // 添加 "age" 键jsonObject.putIfAbsent("name", "小红"); // 不添加 "name" 键

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP SSL证书的未来趋势:适应不断变化的安全挑战

随着网络攻击手段的不断进化和用户对隐私保护意识的增强&#xff0c;IP SSL证书作为保障网络安全的关键组件之一&#xff0c;也在不断地发展和完善。本文将探讨IP SSL证书的未来趋势&#xff0c;以及如何适应这些不断变化的安全挑战。 当前状况与挑战 网络安全意识提升&#…

ARM 裸机与 Linux 驱动对比及 Linux 内核入门

目录 ARM裸机代码和驱动的区别 Linux系统组成 内核五大功能 设备驱动分类 内核类型 驱动模块 驱动模块示例 Makefile配置 命令 编码辅助工具 内核中的打印函数 printk 函数 修改打印级别 ​编辑 打印级别含义 驱动多文件编译 示例 模块传递参数 命令行传递参数…

AND 运算符的优先级高于 OR

在 SQL 中&#xff0c;AND 运算符的优先级高于 OR。这意味着您的查询可能会不按预期执行。为了确保逻辑的正确性&#xff0c;您可能需要使用括号来明确指定运算符的优先级。 正确的&#xff1a;and后用括号把or括起来 SELECT * FROM student WHERE data_status 0 AND (name L…

python-docx 实现 Word 办公自动化

前言&#xff1a;当我们需要批量生成一些合同文件或者简历等。如果手工处理对于我们来说不仅工作量巨大&#xff0c;而且难免会出现一些问题。这个时候运用python处理word实现自动生成文件可极大的提高工作效率。 python-docx是python的第三方插件&#xff0c;用来处理word文件…

图像直方图比较

对于直方图的比较&#xff0c;我们可以使用 OpenCV 提供的函数 compareHist() 进行比较&#xff0c;从而得到一个数值&#xff0c;表示两个直方图的匹配程度&#xff08;相似性&#xff09;。 原理 对于两个直方图&#xff08; H 1 H_{1} H1​ 和 H 2 H_{2} H2​&#xff09…

【大数据】基础认知入门

目录 前言阅读对象阅读导航前置知识笔记正文一、什么是大数据1.1 定义1.2 特点1.3 数据结构1.4 补充总结 二、大数据能用来干什么2.1 应用方向2.2 应用场景&#xff08;简述&#xff09;2.3 总结 三、大数据一般性过程四、给自己的作业 感谢说在后面 前言 唉&#xff0c;最近有…

Kubectl命令、初识pod、namespace

文章目录 一、Kubectl简介基础命令1.基本信息命令2.创建和更新资源命令3.删除资源命令4. 查看日志和调试命令5. 端口转发和复制文件命令6. 部署管理命令7. 伸缩命令8. 配置和上下文管理命令9.常用命令 二、Pod简介核心概念pod常见状态调度和初始化阶段容器创建和运行阶段异常状…

Qt网络通信——TCP和UDP

一、TCP通信 TCP通信必须先建立 TCP 连接&#xff0c;通信端分为客户端和服务器端。 Qt 为服务器端提供了 QTcpServer 类用于实现端口监听&#xff0c;QTcpSocket 类则用于服务器和客户端之间建立连接。大致流程如下图所示&#xff1a; 1. 服务器端建立 1.1 监听——listen() …

PPP简介

介绍PPP特性的定义和目的。 定义 PPP&#xff08;Point-to-Point Protocol&#xff09;协议是一种点到点链路层协议&#xff0c;主要用于在全双工的同异步链路上进行点到点的数据传输。 目的 PPP协议是在串行线IP协议SLIP&#xff08;Serial Line Internet Protocol&#x…

【Android高级UI】将View或Layout裁剪为任意形状

需求 将View裁剪为指定形状 将Layout裁剪为指定形状&#xff0c;并且Children不能超过裁剪范围 应用 圆角图片异形图片圆角Layout 方案 通过ViewOutlineProvider裁剪控件范围 实现 fun View.getMeasureSize(): Size {val widthSpec View.MeasureSpec.makeMeasureSpec(…

代码随想录:动态规划6-10

62、不同路径 题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径…

Hadoop入门基础(三):Hadoop启动踩坑记录

一、机器ssh连接方式非默认22端口 报错&#xff1a; sbin/start-dfs.sh Starting namenodes on [doop253] doop253: ssh: connect to host doop253 port 22: Connection refused 解决方法&#xff1a; sudo vim /etc/ssh/ssh_config 添加如下内容&#xff08;注意替换自己服…

[Qt] 避免CMake编译的Qt程序单独运行时出现控制台窗口的解决办法

只需要在add_executable中加上WIN32即可 避免CMake编译的Qt程序单独运行时出现控制台窗口的解决办法

史上最全的软件工厂考试简答题教程

软件工程考试简答题 1. 有人认为软件开发时&#xff0c;一个错误发现得越晚&#xff0c;为改正它所付出的代价越大。提出你的观点并解释原因&#xff1f; &#xff08;1&#xff09;在软件开发的不同阶段进行修改付出的代价是很不相同的&#xff0c;在早期引入变动&#xff0c…

【Harmony OS 4.0】交互事件(手势事件)

1. 绑定手势方法 1.1 gesture&#xff08;常规手势绑定方法&#xff09; 1.2 priorityGesture&#xff08;带优先级的手势绑定方法&#xff09; 1.3 parallelGesture&#xff08;并行手势绑定方法&#xff09; 可以在父子组件上绑定。可以同时响应的相同手势。当父组件绑定了…

如何清理win备用内存?备用内存过大怎么办?

下载这个软件RamMap 运行以后 选择Empty-Empty Standby List就行了 参考&#xff1a;https://www.zhihu.com/question/263768043 另外&#xff0c;禁用服务中的SystemMain&#xff0c;应该会停止占用备用内存&#xff0c;但是需要重启。 所以没办法只好创建一个任务计划&…

openai whisper使用

whisper使用 介绍 Whisper是一种通用的语音识别模型。它是在大量不同音频数据集上训练的&#xff0c;也是一个多任务模型&#xff0c;可以执行多语言语音识别、语音翻译和语言识别。 GitHub&#xff1a;https://github.com/openai/whisper 论文链接&#xff1a;https://arx…

注册Github账号详细过程

目录 一、准备工作 二、注册步骤 一、准备工作 在注册GitHub账号之前&#xff0c;请确保您已经准备好以下信息&#xff1a; 一个有效的电子邮箱地址&#xff1a;用于接收验证邮件和GitHub的后续通知。 用户名&#xff1a;确保该用户名在GitHub上是唯一的&#xff0c;且符合…

turtle画图知识

Turtle库是Python编程语言中的一个库&#xff0c;用于创建各种类型的图形&#xff0c;包括简单圆形、线条、路径和图片。它支持多种图形类型&#xff0c;并且可以绘制出各种复杂的形状。 以下是一些基本的使用方法&#xff1a; 1. 创建一个新的Turtle对象&#xff1a; pytho…

Leetcode JAVA刷刷站(53)最大子数组和

一、题目概述 二、思路方向 这个问题是一个经典的算法问题&#xff0c;称为“最大子序和”&#xff08;Maximum Subarray Problem&#xff09;。解决这个问题的一个高效方法是使用“Kadanes Algorithm”&#xff0c;它只需要遍历数组一次&#xff0c;就能在 O(n) 时间复杂度内…