首页 前端知识 JSONObject和Map<String, Object>的转换

JSONObject和Map<String, Object>的转换

2024-07-20 17:07:18 前端知识 前端哥 282 191 我要收藏

一、前言

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());  
    }  
}

转载请注明出处或者链接地址:https://www.qianduange.cn//article/14031.html
标签
评论
发布的文章

HTML5 移动开发秘籍(一)

2024-08-05 23:08:12

【HTML5系列教程】

2024-08-05 23:08:12

HTML5面试题

2024-08-05 23:08:06

JQuery基础---01

2024-08-05 23:08:34

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!