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>转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis如何实现延迟加载及缓存

    Mybatis如何实现延迟加载及缓存

    这篇文章主要介绍了Mybatis如何实现延迟加载及缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 简单了解SpringMVC与Struts2的区别

    简单了解SpringMVC与Struts2的区别

    这篇文章主要介绍了简单了解SpringMVC与Struts2的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java实战技巧之if-else代码优化技巧大全

    java实战技巧之if-else代码优化技巧大全

    代码中如果if-else比较多,阅读起来比较困难,维护起来也比较困难,很容易出bug,下面这篇文章主要给大家介绍了关于java实战技巧之if-else代码优化技巧的相关资料,需要的朋友可以参考下
    2022-02-02
  • Java实现中序表达式的实例代码

    Java实现中序表达式的实例代码

    这篇文章主要介绍了Java实现中序表达式的实例代码,需要的朋友可以参考下
    2018-08-08
  • Spring中如何获取request的方法汇总及其线程安全性分析

    Spring中如何获取request的方法汇总及其线程安全性分析

    这篇文章主要给大家介绍了关于Spring中如何获取request的方法汇总及其线程安全性分析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • IDEA 包转模块的解决步骤

    IDEA 包转模块的解决步骤

    很多朋友遇到这样一个问题,直接在idea拉取代码,发现创建的模块包类型不一样了,类似这样的问题该如何处理呢?很多朋友向小编求助,在这统一回答大家,需要的朋友参考下本文吧
    2021-06-06
  • java char数据类型原理解析

    java char数据类型原理解析

    这篇文章主要介绍了java char数据类型原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java中对象的序列化详解及实例

    Java中对象的序列化详解及实例

    这篇文章主要介绍了 Java中对象的序列化详解及实例的相关资料,需要的朋友可以参考下
    2017-04-04
  • java中queue接口的使用详解

    java中queue接口的使用详解

    本篇文章主要介绍了java中queue接口的使用详解,对学习Queue接口有一定的帮助,感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • 详解java中BigDecimal精度问题

    详解java中BigDecimal精度问题

    这篇文章主要介绍了java BigDecimal精度问题,对精确计算感兴趣的同学,可以参考下
    2021-05-05

最新评论