Java中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()); } }
总结
到此这篇关于Java中JSONObject和Map<String, Object>转换的文章就介绍到这了,更多相关JSONObject和Map<String, Object>转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot集成netty实现websocket通信功能
Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端,WebSocket 是一种网络通信协议,相比传统的HTTP协议,本文给大家介绍了SpringBoot集成netty实现websocket通信功能,需要的朋友可以参考下2024-03-03SpringBoot整合Flyway的方法(数据库版本迁移工具)
这篇文章主要介绍了SpringBoot整合Flyway的方法(数据库版本迁移工具),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06jdk-logging log4j logback日志系统实现机制原理介绍
这篇文章主要介绍了jdk-logging、log4j、logback日志介绍以及三个日志系统的实现机制,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-03-03
最新评论