Java中JSONObject和Map<String, Object>的转换方法

 更新时间:2024年07月18日 08:34:05   作者:奋力向前123  
平时对接口时,经常遇到json字符串和map对象之间的交互,这篇文章主要给大家介绍了关于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>转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java datetime数据类型去掉时分秒的案例详解

    java datetime数据类型去掉时分秒的案例详解

    在Java中,如果我们想要表示一个日期而不包括时间(时分秒),我们通常会使用java.time包中的LocalDate类,这篇文章主要介绍了java datetime数据类型去掉时分秒,需要的朋友可以参考下
    2024-06-06
  • Java主流压缩解压工具对比、用法与选取详解

    Java主流压缩解压工具对比、用法与选取详解

    开发过程中可能会用到压缩文件的需求,下面这篇文章主要给大家介绍了关于Java主流压缩解压工具对比、用法与选取的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • springbooot使用google验证码的功能实现

    springbooot使用google验证码的功能实现

    这篇文章主要介绍了springbooot使用google验证码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • JAVA 实现磁盘文件加解密操作的示例代码

    JAVA 实现磁盘文件加解密操作的示例代码

    这篇文章主要介绍了JAVA 实现磁盘文件加解密操作的示例代码,帮助大家利用Java实现文件的加解密,感兴趣的朋友可以了解下
    2020-09-09
  • Spring中bean集合注入的方法详解

    Spring中bean集合注入的方法详解

    Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了。bean的注入相信大家都比较熟悉了,但是有几种不太常用到的集合注入方式,可能有的同学会不太了解,今天我们就通过实例看看它的使用
    2022-07-07
  • Java中LinkedList原理代码解析

    Java中LinkedList原理代码解析

    这篇文章主要介绍了Java中LinkedList原理代码解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Java注解与反射原理说明

    Java注解与反射原理说明

    今天小编就为大家分享一篇关于Java注解与反射原理说明,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java使用Tesseract-Ocr识别数字

    Java使用Tesseract-Ocr识别数字

    这篇文章主要介绍了Java使用Tesseract-Ocr识别数字的方法,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-04-04
  • 微信小程序调用微信登陆获取openid及java做为服务端示例

    微信小程序调用微信登陆获取openid及java做为服务端示例

    这篇文章主要介绍了微信小程序调用微信登陆获取openid及java做为服务端示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 基于Java的度分秒坐标转纯经纬度坐标的漂亮国基地信息管理的方法

    基于Java的度分秒坐标转纯经纬度坐标的漂亮国基地信息管理的方法

    本文以java语言为例,详细介绍如何管理漂亮国的基地信息,为下一步全球的空间可视化打下坚实的基础,首先介绍如何对数据进行去重处理,然后介绍在java当中如何进行度分秒位置的转换,最后结合实现原型进行详细的说明,感兴趣的朋友跟随小编一起看看吧
    2024-06-06

最新评论