当前位置: 首页 > news >正文

JSONObject和Map<String, Object>的转换

一、前言

Java开发中出参返回和入参传入更灵活的方法是使用Map<String, Object>入参或出参,或者使用JSONObject。

1、好处,参数可变,对接口扩展性很友好。

public ResponseData<WXModelDTO> getUserInfo(@RequestBody  Map<String, Object> map )

在获取参数的时候就可以通过

if (map.containsKey("code")) {
            code = map.get("code").toString();
        }

动态选择需要的参数

public WXModelDTO getUserInfo(Map<String, Object> map) {String code = "";String wxCode = "";if (map.containsKey("code")) {code = map.get("code").toString();}if (map.containsKey("wxCode")) {wxCode = map.get("wxCode").toString();}

如果使用对象实体去传参,就需要入参的字段都有,不方便扩展

二、JSONObject和Map<String, Object>的转换

在Java中,JSONObject 和 Map<String, Object> 之间的转换是常见的操作,特别是在处理JSON数据和Java对象时。虽然 JSONObject 是来自某个库(如org.json或com.alibaba.fastjson等)的类,而 Map<String, Object> 是Java标准库中的一部分,但两者之间的转换可以通过简单的方法实现。

从 JSONObject 转换到 Map<String, Object>

对于不同的JSON处理库,转换的方法可能会有所不同,但基本原理相同。这里以 org.json 和 com.alibaba.fastjson 为例:

使用 org.json
import org.json.JSONObject;  import java.util.HashMap;  
import java.util.Iterator;  
import java.util.Map;  public class JsonToMap {  public static Map<String, Object> toMap(JSONObject obj) {  Map<String, Object> map = new HashMap<>();  Iterator<String> keysItr = obj.keys();  while(keysItr.hasNext()) {  String key = keysItr.next();  map.put(key, obj.get(key));  }  return map;  }  // 示例  public static void main(String[] args) {  JSONObject jsonObject = new JSONObject();  jsonObject.put("name", "John Doe");  jsonObject.put("age", 30);  Map<String, Object> map = toMap(jsonObject);  System.out.println(map);  }  
}
使用 com.alibaba.fastjson

Fastjson提供了更为便捷的方法:

import com.alibaba.fastjson.JSONObject;  import java.util.Map;  public class FastJsonToMap {  public static Map<String, Object> toMap(JSONObject jsonObject) {  return jsonObject; // 因为fastjson的JSONObject实现了Map接口  }  // 示例  public static void main(String[] args) {  JSONObject jsonObject = new JSONObject();  jsonObject.put("name", "John Doe");  jsonObject.put("age", 30);  Map<String, Object> map = toMap(jsonObject);  System.out.println(map);  }  
}
import com.alibaba.fastjson.JSONObject;  import java.util.Map;  public class FastMapToJson {  public static JSONObject toJson(Map<String, Object> map) {  return JSONObject.parseObject(JSONObject.toJSONString(map));  }  // 或者直接使用  public static JSONObject toJsonSimple(Map<String, Object> map) {  return (JSONObject) JSONObject.toJSON(map);  }  // 示例  public static void main(String[] args) {  Map<String, Object> map = Map.of("name", "John Doe", "age", 30);  JSONObject jsonObject = toJsonSimple(map);  System.out.println(jsonObject.toJSONString());  }  
}

相关文章:

JSONObject和Map<String, Object>的转换

一、前言 Java开发中出参返回和入参传入更灵活的方法是使用Map<String, Object>入参或出参&#xff0c;或者使用JSONObject。 1、好处&#xff0c;参数可变&#xff0c;对接口扩展性很友好。 public ResponseData<WXModelDTO> getUserInfo(RequestBody Map<…...

C# 建造者模式(Builder Pattern)

建造者模式&#xff08;Builder Pattern&#xff09;&#xff0c;也被称为生成器模式&#xff0c;是一种对象构建模式&#xff0c;旨在将复杂对象的构建过程与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。这种模式特别适用于构建具有多个组成部分的复杂对象&am…...

初阶数据结构速成

本篇文章算是对初阶数据结构的总结&#xff0c;内容较多&#xff0c;请耐心观看 基础概念部分 顺序表 线性表&#xff08; linear list &#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的数据结构&#xff0c;常⻅的线性表&#xff1a;…...

nx上darknet的使用-目标检测-在python中的使用

1 内置的代码 在darknet中已经内置了两个py文件 darknet_video.py与darknet_images.py用法类似&#xff0c;都是改一改给的参数就行了&#xff0c;我们说一下几个关键的参数 input 要预测哪张图像weights 要使用哪个权重config_file 要使用哪个cfg文件data_file 要使用哪个da…...

Python高级(四)_内存管理

Python高级-内存管理 第四章 内存管理 1、对象池 小整数池 系统默认创建好的,等着你使用 概述:整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是 [-5, 256] ,这些整数对象是提前建立好的…...

关键路径-matlab

路径上边的数目称为路径长度 图的基本知识 求最短路径&#xff08;Dijkstra算法&#xff09; 2. 待继续尝试 ①Dijkstra ②floyd_all.m 一 二 ③ LeetCode [329. 矩阵中的最长递增路径]...

JavaDS —— 单链表 与 LinkedList

顺序表和链表区别 ArrayList &#xff1a; 底层使用连续的空间&#xff0c;可以随机访问某下标的元素&#xff0c;时间复杂度为O&#xff08;1&#xff09; 但是在插入和删除操作的时候&#xff0c;需要将该位置的后序元素整体往前或者向后移动&#xff0c;时间复杂度为O&…...

LangChain —— Message —— how to filter messages

文章目录 一、概述二、基本使用三、连成链 一、概述 在更复杂的链和代理中&#xff0c;我们可能会使用消息列表跟踪状态。此列表可以开始累积来自多个不同模型、说话者、子链等的消息&#xff0c;我们可能只想将此完整消息列表的子集传递给链/代理中的每个模型调用。 filter_me…...

conda install问题记录

最近想用代码处理sar数据&#xff0c;解放双手。 看重了isce这个处理平台&#xff0c;在安装包的时候遇到了一些问题。 这一步持续了非常久&#xff0c;然后我就果断ctrlc了 后面再次进行尝试&#xff0c;出现一大串报错&#xff0c;不知道是不是依赖项的问题 后面看到说mam…...

【python】IPython的使用技巧

IPython使用技巧 一、魔法命令 %timeit 用途&#xff1a;用于测量一段代码的执行时间&#xff0c;这对于评估代码的性能非常有帮助&#xff0c;尤其适用于需要进行性能优化和比较不同实现方式效率的场景。示例&#xff1a;%timeit [x**2 for x in range(1000)]扩展&#xf…...

常用知识点问答

kafka如何部署&#xff1f; 先说明kafka的版本如果是 2.X 版本&#xff0c;则要先部署 3或5 个服务器的zookeeper集群&#xff0c;然后在每个zookeeper服务器上部署kafka应用。如果是 3.X 版本&#xff0c;kafka不再依赖zookeeper&#xff0c;所以可以直接在java17的环境上部署…...

paddlenlp cpu windows 下测试gpt

paddlenlp 安装python3.11版本 conda create -n python311 python3.11 激活python conda activate python311 安装paddlepaddle conda install paddlepaddle3.0.0b0 -c paddle pip install paddlenlp3.0.0b0 -U -i https://pypi.tuna.tsinghua.edu.cn/simple windows下…...

uboot的功能

uboot裸机程序&#xff0c;uboot的核心功能是启动内核 uboot启动流程 XIP设备&#xff1a; 1、硬件初始化 2、读flash上面的内核&#xff0c;拷贝进内存 3、启动内核 非XIP设备 1、BROM程序拷贝uboot到RAM 2、执行uboot 3、硬件初始化 4、读flash上面的内核&#xff0c;拷贝进…...

java导出word实现

参考&#xff1a;Poi-tl Documentation...

Flink 提交作业的方式

首先我进行了flink单机部署&#xff0c;个人建议不管是学习还是开发尽量不使用 然后开始了flink自带集群部署&#xff0c;部署在三台服务器上&#xff0c;资源管理由flink集群自己管理&#xff0c;然后为了解决集群的单点故障问题&#xff0c;使用zookeeper监听事件&#xff0…...

JVM系列 | 垃圾收集算法

JVM系列 | 垃圾收集算法 文章目录 前言如何判断对象已"死"&#xff1f;引用计数法可达性分析算法可达性分析2.0版 | 引用的增强对象的消亡过程回收方法区主要回收目标&#xff1a;回收操作 垃圾收集算法分代收集理论 与 跨代引用假说分代收集理论跨带引用假说 垃圾收…...

深入理解Spring Boot中的事件驱动架构

深入理解Spring Boot中的事件驱动架构 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 引言 事件驱动架构在现代软件开发中越来越受欢迎&#xff0c;它能够提高系统的松耦合性和可扩展性。Sprin…...

Moldflow安装包下载:附网盘地址+详细教程步骤

如大家所了解的&#xff0c;Autodesk Moldflow仿真软件具有注塑成型仿真工具&#xff0c;能够帮助您验证和优化塑料零件、注塑模具和注塑成型流程。目前常用的版本有Moldflow 2019和Moldflow2023。 还没有获取Moldflow软件安装包资源的小伙伴&#xff0c;可以用百度云盘保存或下…...

2024辽宁省数学建模B题【钢铁产品质量优化】思路详解

2024 辽宁省大学数学建模竞赛试题 B 题 钢铁产品质量优化 由于连续退火工序中各阶段的工艺参数之间存在耦合性&#xff08;加热炉的温度设定会影响后续均热与冷却温度的设定&#xff0c;以及带钢穿行速度&#xff09;&#xff0c;导致难以建立该工序的机理模型&#xff0c;从而…...

C++基础入门(上)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 C基础入门(上) 收录于专栏【C语法基础】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. C发展历史 2. C版本…...

这次终于选对了!2026年最值得体验的专业AI论文软件

2026年AI论文写作工具已从“内容生成”进化为融合学术规范与智能优化的全流程解决方案&#xff0c;核心评价维度涵盖文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规等关键指标。本次测评覆盖6款主流工具&#xff0c;涵盖中英文、全流程与专项功能、免费与付费版本&am…...

深大计算机考研复试全流程避坑指南:从机试环境、酒店选择到体检时机,这些细节别忽略

深大计算机考研复试全流程避坑指南&#xff1a;从机试环境到行程管理的实战策略 站在深大计算机楼前的那一刻&#xff0c;我才真正理解"细节决定成败"的含义——隔壁考场的同学因为酒店空调噪音彻夜未眠&#xff0c;机试时手指发抖敲错关键符号&#xff1b;而提前三个…...

AtlasOS终极指南:专业解决Windows安装错误2502/2503的完整方案

AtlasOS终极指南&#xff1a;专业解决Windows安装错误2502/2503的完整方案 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trendi…...

Google Test进阶玩法:用测试夹具重构你的C++项目(CLion实战篇)

Google Test进阶实战&#xff1a;用测试夹具重构复杂C项目的工程化实践 当你的C项目从几百行扩展到几万行代码时&#xff0c;那些曾经简单的单元测试开始变得力不从心。测试用例之间出现隐蔽的状态依赖&#xff0c;setup代码重复率飙升&#xff0c;而每次运行测试套件的时间越来…...

AI净界开箱即用:无需配置,上传图片秒出透明背景,亲测好用

AI净界开箱即用&#xff1a;无需配置&#xff0c;上传图片秒出透明背景&#xff0c;亲测好用 1. 产品核心价值 在电商设计、内容创作和数字营销领域&#xff0c;背景移除是最频繁却又最耗时的图像处理需求之一。传统方法要么需要专业软件技能&#xff0c;要么效果难以令人满意…...

Qwen2.5-VL视觉定位模型优化升级:GPU加速、批量处理、提示词技巧

Qwen2.5-VL视觉定位模型优化升级&#xff1a;GPU加速、批量处理、提示词技巧 1. 视觉定位技术概述 视觉定位&#xff08;Visual Grounding&#xff09;是计算机视觉领域的一项关键技术&#xff0c;它能够根据自然语言描述在图像中精确定位目标对象。这项技术在智能相册管理、…...

AIVideo效果震撼:输入‘量子计算科普’生成带3D动画与专家语音的12分钟视频

AIVideo效果震撼&#xff1a;输入‘量子计算科普’生成带3D动画与专家语音的12分钟视频 只需输入一个主题词&#xff0c;就能自动生成包含专业分镜、精美画面、专家级配音的完整长视频——AIVideo让视频创作变得如此简单。 1. AIVideo&#xff1a;一站式AI视频创作革命 当我第…...

洛谷-入门4-数组3

P2141 [NOIP 2014 普及组] 珠心算测验 题目背景 NOIP2014 普及 T1 题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练&#xff0c;既能够开发智力&#xff0c;又能够为日常生活带来很多便利&#xff0c;因而在很多学校得到普及。 某学…...

【技术解析】MapReduce:大规模集群上的高效数据处理框架

1. MapReduce框架的核心思想 第一次听说MapReduce时&#xff0c;我正被一个TB级日志分析任务折磨得焦头烂额。传统单机处理需要几十个小时&#xff0c;而当我用上这个框架后&#xff0c;同样任务在200台机器上仅用23分钟就完成了。这种化腐朽为神奇的体验&#xff0c;让我彻底理…...

Navicat重置工具:Mac版Navicat无限试用终极指南

Navicat重置工具&#xff1a;Mac版Navicat无限试用终极指南 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 你是否正在为Navicat Premium的14天试用期到期而烦恼&#xff1f;作…...